Captchas automatisch befüllen lassen
Um lästige Spam Kommentare oder sonstige Spam Attacken abwehren zu können setzt man in der Regel Captchas ein. Die bekanntesten Captchas sind wohl die Bilder auf denen wirre Buchstaben oder Zahlen stehen und man diese nur als Mensch entziffern kann. Ein solches Beispiel findet man z.B. auf der Registrierungsseite für einen Google Account:
Leider sind solche Buchstabenbilder nicht immer trivial sondern manchmal gänzlich unlösbar – jedenfalls erging es mir erst letzte Woche so.
Aufgrund dieser Problematik sind viele Webseite dazu übergegangen sehr einfach zu lösende Fragen als Captcha zu verwenden. Eine aktuell viel gesehen Frage ist z.B. “Wie heißt der Vorname von Franz Beckenbauer?”. Aber auch Mathefragen wie z.B. “Was ergibt 3+1″ sind beliebt. Das man eine Mathefrage auch übertreiben kann zeigt der folgende Screenshot, der im Interne kursiert:
Allerdings sieht man auf dem Screenshot, dass es sich um eine russische Seite handelt und bekanntlich können Russen grandios rechnen, so dass dieses Captcha für einen Russen wohl kein Problem darstellt.
Jedenfalls merkt man, dass Captchas nicht nur Bots von der Webseite ausschließen sondern auch unter Umständen die eigentliche Zielgruppe. Nun hat Peter Körner schon vor über zwei Jahren bemerkt und geschrieben, dass Bots ziemlich dumm sind und man dadurch sein Captcha sehr einfach gestalten kann. Er hat beschrieben, dass er z.B. nur ein Bild verwendet und der User das darauf abgebildete Tier (Elefant) eingeben muss. Das Bild ändert sich dabei nie sondern bleibt immer gleich. Weil man das ganze allerdings einfacher barrierefrei halten dann bietet sich eben die oben schon genannte Frage nach dem Vornamen von Franz Beckenbauer an.
Nun aber das eigentliche Highlight dieses Artikels: Peter Körner hat gestern einen wirklich sehr guten Hinweis auf die absolute Vereinfachung eines Captchas gegeben: Captchas automatisch durch JavaScript ausfüllen lassen. Immer noch ist die Ausgangslage, dass die Bots sehr dumm sind und in der Regel kein JavaScript verstehen. Die Vereinfachung des Captchas besteht nun darin, dass nach dem laden der Webseite ein JavaScript abläuft, der das Input Element selbst korrekt befüllt und dieses anschließend ausblendet:
<div id="antispam-div"> Wie heißt der Vorname von <strong>Franz</stong> Bekenbauer? <input type="text" name="antispam" value=""></input> </div> <script type="text/javascript"> var el = document.getElementById('antispam-div'); el.value = 'Franz'; el.style.display = 'none'; </script>
Sofern ein User also JavaScript im Browser eingeschaltet hat wird er diese Frage überhaupt nicht zu Gesicht bekommen, denn das umschließende div Element wird direkt ausgeblendet.
Da im Artikel von Peter Körner noch die Mootols-Variante präsentiert wurde kommt hier die dazugehörige einzeilige jQuery Variante =)
<script type="text/javascript"> $("#antispam-div").val("Franz").css("display", "none"); </script>
Die Idee ist einfach genial und ich werde sie wohl so in meinen zukünftigen Projekten übernehmen.
