Ten wpis nie odpowiada na pierwotne pytanie, jednak pomaga wdrożyć podobne rozwiązanie. Jak powiedział @IanM, checkbox recaptcha jest w fazie beta i nie można go używać bez zaproszenia.
WAŻNA EDYCJA Google wprowadził nową reCAPTCHA
To jest CAPTCHA oparta na JavaScript.
Ponieważ większość robotów spamujących nie wykonuje JavaScript i nie może zidentyfikować korelacji między wyświetlanym tekstem a DOM lub wymaganymi działaniami, nie mogą kliknąć pola wyboru.
Zwróć uwagę, że w ogóle nie ma pola wyboru, jest to po prostu element div z pewnymi stylami CSS. Spamboty próbują wypełnić elementy wejściowe formularza, ale w CAPTCHA nie ma danych wejściowych. Znacznik wyboru to po prostu kolejny element div (klasa css).
Po kliknięciu pola żądanie AJAX powiadamia serwer, że kliknięto element div, a serwer przechowuje te informacje w tymczasowej pamięci (oznacza token: ten token został aktywowany przez człowieka). Kiedy wysyłasz formularz, ukryte pole wysyła token, który został aktywowany, a następnie, gdy serwer zweryfikuje informacje z formularza, rozpozna, że token został aktywowany. Jeśli token nie zostanie aktywowany, formularz zostanie unieważniony.
Kroki w punktowanych punktach:
- Wygeneruj unikalny identyfikator i dodaj go do formularza z ukrytymi danymi wejściowymi
- Renderuj checkbox na stronie (bez użycia
<input>
elementu, ewentualnie używając <div>
) i dodaj do niego wygenerowany wcześniej identyfikator (możesz skorzystać z data-*
atrybutów html5 )
- Gdy użytkownik kliknie to pole wyboru, wyślij żądanie AJAX do serwera i sprawdź poprawność CAPTCHA, jeśli jest poprawne, zaznacz je jako
in use
. (Pokaż wynik - identyfikator jest OK / nie OK - użytkownikowi)
- Gdy użytkownik wysyła formularz, dane formularza zawierają identyfikator. Sprawdź jeszcze raz, powinno istnieć i powinno być w
in use
stanie.
- Jeśli wszystkie walidacje zostaną zakończone, dane formularza są gotowe do użycia / przetworzenia
Możesz powiązać identyfikator z sesją użytkownika, adresem IP i / lub możesz użyć ograniczeń czasowych w celu zwiększenia bezpieczeństwa.
UWAGA Ten rodzaj CAPTCHA działa tylko wtedy, gdy włączony jest JavaScript!
UWAGA (edycja 1) Jak stwierdził @crazypotato, istnieje kilka narzędzi do automatyzacji, które mogą wykonywać JavaScript, narzędzia te mogą również wysyłać odpowiednie żądanie AJAX i uruchamiać zdarzenie Click w polu wyboru div.
UWAGA (edycja 2) Zwróć uwagę, że skrypt napisany do konkretnej witryny lub w celu złamania jednego typu captcha wcześniej czy później przejdzie. Nie ma ostatecznej ochrony, możesz tylko zmusić boty (lub ich twórców) do cięższej pracy.
UWAGA (edytuj 3) Kroki i opis w tej odpowiedzi zawierają tylko podstawowe informacje na temat tego typu captcha, zawsze musisz dodać dodatkowe walidacje i kroki bezpieczeństwa, aby uczynić go bezpieczniejszym. Na przykład Google noCaptcha systematycznie uruchamia standardową reCaptcha po 3 „kliknięciach div”.