Scarnox · Blog

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:

  1. Strona zawiera skrypt GeeTest i tworzy widżet z identyfikatorem captcha. W wielu integracjach ten identyfikator jest przekazywany jako parametr o nazwie gt.
  2. Widżet prosi serwer GeeTest o świeże wyzwanie. Wyzwanie zawiera wartość challenge oraz obrazy lub pozycje kafelków potrzebne do zagadki.
  3. 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:

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:

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:

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

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.

Następne kroki