Captcha GeeTest wyjaśnione: jak działa i jak je rozwiązać
GeeTest to dostawca captcha, którego widżety proszą odwiedzającego o wykonanie zadania wizualnego: przeciągnięcia elementu zagadki w lukę, kliknięcia zestawu ikon w określonej kolejności albo wykonania krótkiego ruchu suwakiem. Jest powszechny w sklepach internetowych, na stronach logowania i w backendach aplikacji w wielu regionach. To także jedna z rodzin captcha, której Scarnox jeszcze nie rozwiązuje. Ten przewodnik wyjaśnia, jak działa GeeTest, dlaczego automatyzacja jest trudniejsza niż przy widżecie tokenowym, jakie podejścia stosuje się ogólnie i jaki jest dziś stan wsparcia Scarnox.
Co GeeTest robi na stronie
Captcha GeeTest zwykle ładuje się w trzech krokach:
- Strona zawiera skrypt GeeTest i tworzy widżet z identyfikatorem captcha. W wielu integracjach ten identyfikator jest przekazywany jako parametr o nazwie
gt. - Widżet prosi serwer GeeTest o świeże wyzwanie. Wyzwanie zawiera wartość
challengeoraz obrazy lub pozycje kafelków potrzebne do zagadki. - Gdy odwiedzający ukończy zadanie, widżet odsyła wynik do serwisu. Backend serwisu weryfikuje ten wynik u dostawcy captcha, zanim zaakceptuje formularz.
Trzeci krok ma znaczenie. Wiarygodnie wyglądająca wartość nie wystarczy, bo serwer sprawdza wynik powiązany z jednym wyzwaniem, który wygasa. Dlatego wartość skopiowana z innej sesji zawodzi, a ponowne odtworzenie starego wyniku nie działa.
Dlaczego GeeTest jest trudniejszy niż widżet tokenowy
Przy PopularCaptcha strona potrzebuje jednego ciągu tokenu, a pojedyncze żądanie zwraca ten ciąg. GeeTest różni się w trzech punktach:
- Wynikiem jest rezultat zadania, a nie pojedynczy ciąg. Serwis oczekuje kilku wartości należących do siebie, które wszystkie muszą pochodzić z tego samego wyzwania.
- Wyzwanie jest wizualne i pozycyjne. Solver musi znaleźć, gdzie pasuje element zagadki lub które ikony się zgadzają, a następnie wykonać ruch, który wygląda jak ruch człowieka.
- Sprawdzenia patrzą też na zachowanie, a nie tylko na odpowiedź. Można analizować szybkość, ścieżkę i czas. Poprawna pozycja wykonana w robotyczny sposób nadal może zostać odrzucona.
Z tego powodu rozwiązywanie GeeTest to zadanie wieloetapowe: pobranie wyzwania, zlokalizowanie celów na obrazie, wygenerowanie ruchu, wysłanie go i odczytanie werdyktu. Każdy etap może się nie udać, a wyzwanie wygasa, jeśli czekasz zbyt długo między etapami.
Ogólne podejścia
Osoby automatyzujące strony GeeTest zwykle stosują jedno z trzech podejść. Żadne z nich nie jest skrótem, a każde ma koszty:
- Sterowanie prawdziwą przeglądarką. Playwright lub Selenium ładuje stronę, a Twój skrypt przesuwa suwak. Działa najlepiej na serwisie, który kontrolujesz, lub w środowisku testowym, z którego wolno Ci korzystać. Przeglądarka jest prawdziwa, ale ruch nadal musi wyglądać naturalnie.
- Dopasowanie obrazu. Twój kod pobiera tło zagadki, znajduje lukę metodą dopasowania szablonu (na przykład z OpenCV) i oblicza odległość przeciągnięcia. To często najbardziej niezawodna część konfiguracji samodzielnej i psuje się, gdy dostawca zmieni układ obrazu.
- Człowiek w pętli lub usługa rozwiązująca. Człowiek lub zarządzana usługa rozwiązuje wyzwanie i zwraca wynik. Scarnox planuje oferować tę opcję dla GeeTest, ale nie jest ona jeszcze uruchomiona.
Cokolwiek wybierzesz, zachowaj uczciwy zakres: automatyzuj przepływy, które posiadasz, środowiska testowe, z których wolno Ci korzystać, lub dane publiczne, które wolno Ci zbierać.
Znajdowanie identyfikatora captcha
Na start nie potrzebujesz kodu. Otwórz DevTools, przeładuj stronę i przeszukaj kartę Network pod kątem geetest lub gt. Pierwsze żądanie ładujące widżet zwykle pokazuje identyfikator captcha. Mały skrypt może go zapisać, co jest przydatne, gdy chcesz zauważyć zmianę widżetu na stronie:
import re
import requests
html = requests.get("https://example.com/login", timeout=30).text
match = re.search(r"gt['\"]?\s*[:=]\s*['\"]([a-f0-9]{32})['\"]", html)
print("captcha id:", match.group(1) if match else "not found")
Wzorzec powyżej szuka 32-znakowej wartości szesnastkowej obok gt. Dostawcy zmieniają swój markup, więc traktuj go jako punkt wyjścia i sprawdzaj wynik na testowanej stronie.
Stan wsparcia Scarnox
Bądź jasny w tej sprawie, gdy planujesz projekt:
- Działa dziś: PopularCaptcha, bez proxy i z własnym proxy.
- Wkrótce: GeeTest, reCAPTCHA v2 i v3, Cloudflare Turnstile, AWS WAF i Arkose. Nie buduj produkcyjnego przepływu, który zależy od rozwiązania GeeTest, dopóki nie będzie oznaczony jako działający.
Jeśli Twój projekt potrzebuje GeeTest już teraz, praktyczną drogą jest samodzielne zbudowanie kroków przeglądarkowych i obrazowych dla stron, które wolno Ci testować, oraz przygotowanie kodu do przełączenia na API, gdy wsparcie zostanie uruchomione. Tymczasem możesz założyć konto i zacząć od darmowego kredytu próbnego, bez karty. Dostaniesz działający przepływ PopularCaptcha do testów i miejsce, w które później podłączysz GeeTest. Aktualne stawki znajdziesz na stronie cennika.
Uzasadnione zastosowania
- Testowanie własnego logowania lub procesu zakupu, gdy captcha blokuje zautomatyzowane testy regresyjne.
- Testy dostępności, które potwierdzają, że odwiedzający, który nie może rozwiązać wizualnej zagadki, ma inną drogę do wypełnienia formularza.
- Monitorowanie serwisu, do którego masz pozwolenie, na przykład sprawdzanie, czy widżet nadal się ładuje po wdrożeniu.
Nie używaj automatyzacji captcha do tworzenia fałszywych kont, ataków na formularz logowania ani do przejmowania ograniczonych towarów. Takie działania łamią zasady większości serwisów i Scarnox ich nie obsługuje.