Dieser Eintrag beantwortet nicht die ursprüngliche Frage, hilft jedoch bei der Implementierung einer ähnlichen Lösung. Wie @IanM sagte, befindet sich das Kontrollkästchen recaptcha in der Beta-Phase und kann nicht ohne Einladung verwendet werden.
WICHTIGE BEARBEITUNG Google hat das neue reCAPTCHA eingeführt
Dies ist ein JavaScript-basiertes CAPTCHA.
Da die meisten Spambots kein JavaScript ausführen und die Korrelation zwischen dem angezeigten Text und dem DOM oder den erforderlichen Aktionen nicht identifizieren können, können sie nicht auf das Kontrollkästchen klicken.
Bitte beachten Sie, dass es überhaupt kein Kontrollkästchen gibt, sondern nur ein div-Element mit etwas CSS-Stil. Spambots versuchen, die Formulareingabeelemente auszufüllen, aber es gibt keine Eingabe in CAPTCHA. Das Häkchen ist nur ein weiteres div (CSS-Klasse).
Wenn Sie auf das Feld klicken, benachrichtigt eine Ajax-Anfrage den Server, dass auf das Div geklickt wurde, und der Server speichert diese Informationen in einem temporären Speicher (markiert das Token: Dieses Token wurde von einem Menschen aktiviert). Wenn Sie das Formular senden, sendet ein verstecktes Feld das aktivierte Token. Wenn der Server die Formularinformationen überprüft, erkennt er, dass das Token aktiviert wurde. Wenn das Token nicht aktiviert ist, wird das Formular ungültig.
Die Schritte in Aufzählungszeichen:
- Generieren Sie einen eindeutigen Bezeichner und fügen Sie ihn mit einer versteckten Eingabe zum Formular hinzu
- Rendern Sie ein Kontrollkästchen auf der Site (ohne das
<input>
Element zu verwenden, möglicherweise mit <div>
) und fügen Sie den zuvor generierten Bezeichner hinzu (Sie können die HTML5- data-*
Attribute verwenden).
- Wenn der Benutzer auf das Kontrollkästchen klickt, senden Sie eine Ajax-Anfrage an den Server und validieren Sie das CAPTCHA. Wenn es gültig ist, markieren Sie es als
in use
. (Zeigen Sie dem Benutzer das Ergebnis - Kennung ist OK / nicht OK -)
- Wenn der Benutzer das Formular sendet, enthalten die Daten des Formulars die Kennung. Überprüfen Sie es noch einmal, es sollte existieren und es sollte in einem
in use
Zustand sein.
- Wenn alle Überprüfungen bestanden sind, können die Daten des Formulars verwendet / verarbeitet werden
Sie können die Kennung an die Sitzung, die IP-Adresse des Benutzers binden und / oder Zeitlimits verwenden, um die Sicherheit zu verbessern.
HINWEIS Diese Art von CAPTCHA funktioniert nur, wenn JavaScript aktiviert ist!
HINWEIS (Bearbeiten 1) Wie @crazypotato feststellte, gibt es einige Automatisierungstools, die JavaScript ausführen können. Diese Tools können auch die richtige AJAX-Anforderung senden und das Click-Ereignis im Kontrollkästchen div auslösen.
HINWEIS (Bearbeiten 2) Bitte beachten Sie, dass ein Skript, das speziell für eine Site geschrieben wurde oder um eine Art von Captcha zu brechen, früher oder später durchkommt. Es gibt keinen ultimativen Schutz, Sie können nur die Bots (oder ihre Entwickler) härter arbeiten lassen.
HINWEIS (Bearbeiten 3) Die Schritte und die Beschreibung in dieser Antwort enthalten nur einige grundlegende Informationen zu dieser Art von Captcha. Sie müssen immer zusätzliche Überprüfungen und Sicherheitsschritte hinzufügen, um die Sicherheit zu erhöhen. Beispielsweise löst Google noCaptcha systematisch ein Standard-reCaptcha nach 3 "Div-Klicks" aus.