Vor einigen Tagen hat Google eine neue Version von RECAPTCHA veröffentlicht, die angeblich zugänglich sein soll. Warum dies kompletter Bullshit und lediglich Augenwischerei ist, möchte ich hier gern einmal verdeutlichen.

Was ist nochmal ein CAPTCHA? 🔗

CAPTCHA steht für „Completely Automated Public Turing test to tell Computers and Humans Apart“, also „vollautomatisierter öffentlicher Turing-Test, um Computer und Menschen voneinander unterscheiden zu können“. Es geht hierbei darum, ein Blog, Forum oder anderes kontogestütztes Webangebot vor Spam-Robotern zu schützen, also Computern, die automatisiert Konten anlegen, um darüber dann massenhaft Werbung zu verbreiten.

Ein CAPTCHA besteht zumeist aus für Computer schwer lesbaren Texten oder Ziffern, die ein Mensch aber in der Regel entziffern können soll und sich somit als „echt“ gegenüber dem Server zu erkennen gibt. Da nicht alle Menschen lesen können, gibt es auch Alternativen wie verzerrte oder durch Hintergrundgeräusche gestörte Audiodateien, die Ziffern oder Wörter enthalten, die man abtippen muss, oder es werden Matheaufgaben gestellt, die man lösen und sich so mit dem richtigen Ergebnis als Mensch zu erkennen geben muss. Dass gerade letztere in aller Regel durch nur wenige Zeilen Perl oder Python gelöst werden können, ist eine Tatsache, die aber nicht Teil dieses Posts ist.

Das Problem mit der Zugänglichkeit 🔗

Google behauptet nun, dass die neue Version von RECAPTCHA, die man z. B. auf dieser von Patrick Lauke erstellten Beispielseite (öffnet in neuem Tab) ausprobieren kann, für Menschen mit Behinderungen zugänglicher sei als frühere Versionen. Es gibt jetzt ein Kontrollkästchen, das beschriftet ist mit „Ich bin kein Bot“. Aktiviert man dieses, laufen einige Tests ab, die darüber entscheiden sollen, ob man als Mensch erkannt wird oder nicht. Unter anderem fließen so Dinge wie die Bewegung der Maus in diese Heuristik ein, die man ausführt, um das Kontrollkästchen zu aktivieren. Weiterhin wird natürlich die IP-Adresse geprüft und verschiedene andere Dinge, wie z. B. ob man gerade oder kürzlich bei einem Google-Konto angemeldet war usw. Schlägt diese automatische Überprüfung fehl, wird man auf das herkömmliche System mit Text- oder Audio-CAPTCHA zurückgeworfen.

Das Problem ist nun, dass Screen Reader für Blinde oder Spracherkennungssoftware Kontrollkästchen eben nicht wie ein Mensch aktivieren, sondern einen Skriptbefehl oder ein Äquivalent ausführen, um das tun. Sie tun also im Grunde nichts anderes als Spambots, vor denen sich Webseiten ja gerade schützen wollen.

In den letzten Tagen gab es auf Twitter aber immer wieder Berichte, dass Anwender von Screen Readern vermeldet haben, dass sie das CAPTCHA problemlos lösen konnten, indem sie einfach das Kontrollfeld per Screen Reader aktivieren. Andere hatten jedoch mit exakt der gleichen Screen-Reader-/Browser-Kombination negative Ergebnisse.

Funktioniert, wenn man die obige Aussage über Screen Reader und Spambots zu Grunde legt, das CAPTCHA also nicht? Betrachten wir es doch mal nach einem typischen Ausschlussverfahren, das „funktionieren“ und „zugänglich“ miteinander kombiniert:

  1. Es funktioniert nicht und ist nicht zugänglich.
  2. Es funktioniert, ist aber nicht zugänglich.
  3. Es funktioniert nicht, ist aber zugänglich.
  4. Es funktioniert und ist zugänglich.

Punkt 1 erledigt sich von Selbst. Punkt 2 ebenfalls. Punkt 3 ist ebenso unsinnig, denn wie die Testergebnisse zeigen, ist es zwar i.d.r. zugänglich, funktioniert aber nicht immer, also nicht. Und Punkt 4 ist ein Widerspruch in sich, denn dieses RECAPTCHA-System kann nicht gleichzeitig zugänglich sein und funktionieren. Nochmals: Um ein Kontrollkästchen zu aktivieren, müssen Screen Reader und andere Spezialsoftware für Menschen mit Behinderungen automatisiert auf dieses Kontrollkästchen zugreifen und es aktivieren. Ein zuverlässiges Interagieren mit solchen Elementen ist allein durch eine Emulation von Mausbewegungen nicht möglich.

Während Googles neue Version von RECAPTCHA also rein vom Markup her die Voraussetzungen für Zugänglichkeit erfüllt, da dieses Kontrollfeld sowohl mit der Tastatur angesprungen werden kann als auch die richtigen Informationen an Screen Reader raus gibt, ist seine Zuverlässigkeit alles andere als gegeben, wenn man damit als Person mit einer Behinderung interagieren will. Zur Demonstration seien einige Videos angefügt, die Patrick Lauke kürzlich mit verschiedenen Screen Readern und Browsern auf der o. g. Testseite durchgeführt hat (öffnen alle in neuen Tabs):

All diese Videos zeigen, wie unzuverlässig die Erkennung läuft, obwohl, mal abgesehen von einigen Kinderkrankheiten bei der Tastaturbedienbarkeit, die Zugänglichkeit prinzipiell funktioniert. Warum es bei manchen manchmal doch klappt, weiß keiner. Eventuell hängt es auch davon ab, ob der amerikanische Präsident gerade auf Klo sitzt oder so.

CAPTCHAs gehören aber eh in die Tonne 🔗

Das Hauptproblem bei CAPTCHAs ist aber, dass dies für alle, egal ob Behinderung oder nicht, ein absoluter Alptraum der Benutzbarkeit ist. Die Schrift muss heute so verschwurbelt sein, damit Computer sie nicht entziffern können, dass selbst Menschen sie kaum noch lesen können. Mal ganz davon abgesehen, dass die Verantwortung für ein sicheres System hier auf den Endanwender abgewälzt wird, indem er erhebliche Mühen aufwenden muss, um sich als Mensch zu erkennen zu geben. Es gibt diverse Möglichkeiten, die Systeme auf Serverseite zu schützen, die effektiv sind, so dass man diese Bürde einem Endanwender wirklich nicht aufdrücken muss. Als Lektüre empfehle ich z. B. diesen englischsprachigen Artikel von Karl Groves mit Titel „Captchaless security„.

Und ja, jedem Webentwickler, der mich nach einer zugänglichen CAPTCHA-Lösung fragt, werde ich auch weiterhin sagen, dass er sich gefälligst auf seine vier Buchstaben zu setzen und seine Hausaufgaben ordentlich zu machen hat, anstatt sich jede Woche ein neues Framework wie rülps.js oder furz.js von Github herunterzuladen und damit zu spielen! Ihr wollt, dass eure Webseiten von Menschen benutzt werden, die eventuell sogar Geld da lassen sollen. Also implementiert gefälligst eine Lösung, die diesen Menschen nicht aufbürdet, sich als solche erkennen geben zu müssen, sondern behandelt sie mit Respekt!