GeeTest-Captcha erklärt: so funktioniert es und wie man es löst
GeeTest ist ein Captcha-Anbieter, dessen Widgets den Besucher eine visuelle Aufgabe lösen lassen: ein Puzzleteil in eine Lücke ziehen, eine Reihe von Symbolen in einer bestimmten Reihenfolge anklicken oder eine kurze Schieber-Bewegung ausführen. Es ist auf E-Commerce-Seiten, Login-Seiten und App-Backends in vielen Regionen verbreitet. Außerdem gehört es zu den Captcha-Familien, die Scarnox noch nicht löst. Dieser Leitfaden erklärt, wie GeeTest funktioniert, warum die Automatisierung schwerer ist als bei einem tokenbasierten Widget, welche Ansätze Menschen allgemein verwenden und wo die Unterstützung bei Scarnox heute steht.
Was GeeTest auf einer Seite macht
Ein GeeTest-Captcha lädt meist in drei Schritten:
- Die Seite bindet das GeeTest-Skript ein und erstellt ein Widget mit einer Captcha-ID. In vielen Integrationen wird diese ID als Parameter namens
gtübergeben. - Das Widget fragt den GeeTest-Server nach einer frischen Challenge. Die Challenge enthält einen Wert
challengeund die Bilder oder Kachelpositionen, die für das Puzzle nötig sind. - Wenn der Besucher die Aufgabe abgeschlossen hat, sendet das Widget das Ergebnis an die Website zurück. Das Backend der Website prüft dieses Ergebnis dann beim Captcha-Anbieter, bevor es das Formular akzeptiert.
Der dritte Schritt ist entscheidend. Ein plausibel aussehender Wert reicht nicht, weil der Server ein Ergebnis prüft, das an genau eine Challenge gebunden ist und abläuft. Deshalb funktioniert ein Wert aus einer anderen Sitzung nicht, und das erneute Abspielen eines alten Ergebnisses ebenso wenig.
Warum GeeTest schwerer ist als ein Token-Widget
Bei PopularCaptcha braucht die Seite eine einzige Token-Zeichenkette, und eine einzelne Anfrage liefert sie. GeeTest unterscheidet sich in drei Punkten:
- Die Ausgabe ist das Ergebnis einer Aufgabe, nicht eine einzelne Zeichenkette. Die Website erwartet mehrere Werte, die zusammengehören, und alle müssen aus derselben Challenge stammen.
- Die Challenge ist visuell und positionsbezogen. Ein Solver muss finden, wo ein Puzzleteil passt oder welche Symbole zusammengehören, und dann eine Bewegung erzeugen, die wie die eines Menschen aussieht.
- Die Prüfungen betrachten auch das Verhalten. Geschwindigkeit, Pfad und Timing können untersucht werden. Eine korrekte Position, die auf roboterhafte Weise geliefert wird, kann trotzdem abgelehnt werden.
Deshalb ist eine GeeTest-Lösung ein mehrstufiger Vorgang: die Challenge abrufen, die Ziele im Bild finden, eine Bewegung erzeugen, sie absenden und das Urteil lesen. Jeder Schritt kann fehlschlagen, und die Challenge läuft ab, wenn Sie zwischen den Schritten zu lange warten.
Allgemeine Ansätze
Wer GeeTest-Seiten automatisiert, nutzt im Allgemeinen einen von drei Ansätzen. Keiner ist ein Abkürzung, und jeder hat seine Kosten:
- Einen echten Browser steuern. Playwright oder Selenium laden die Seite, und Ihr Skript bewegt den Schieber. Das funktioniert am besten auf einer Website, die Sie kontrollieren, oder einer Testumgebung, die Sie nutzen dürfen. Der Browser ist echt, aber die Bewegung muss trotzdem natürlich wirken.
- Bildabgleich. Ihr Code lädt den Puzzle-Hintergrund herunter, findet die Lücke mit Template-Matching (zum Beispiel mit OpenCV) und berechnet die Zugdistanz. Das ist oft der verlässlichste Teil eines Eigenbau-Setups, und er bricht, sobald der Anbieter das Bildlayout ändert.
- Human-in-the-loop oder ein Lösungsdienst. Ein Mensch oder ein verwalteter Dienst löst die Challenge und liefert das Ergebnis zurück. Scarnox plant diese Option für GeeTest, sie ist aber noch nicht live.
Egal, was Sie wählen: Halten Sie den Umfang ehrlich. Automatisieren Sie Abläufe, die Ihnen gehören, Testumgebungen, die Sie nutzen dürfen, oder öffentliche Daten, die Sie sammeln dürfen.
Die Captcha-ID finden
Sie brauchen keinen Code, um anzufangen. Öffnen Sie die DevTools, laden Sie die Seite neu und suchen Sie im Netzwerk-Tab nach geetest oder gt. Die erste Anfrage, die das Widget lädt, zeigt meist die Captcha-ID. Ein kleines Skript kann sie aufzeichnen, was nützlich ist, wenn Sie merken wollen, dass eine Seite ihr Widget ändert:
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")
Das obige Muster sucht nach einem 32-stelligen Hexadezimalwert neben gt. Anbieter ändern ihr Markup, betrachten Sie es also als Ausgangspunkt und prüfen Sie die Ausgabe gegen die Seite, die Sie testen.
Wo die Unterstützung bei Scarnox steht
Seien Sie bei der Planung eines Projekts hier eindeutig:
- Heute live: PopularCaptcha, proxyless, und mit eigenem Proxy.
- Bald verfügbar: GeeTest, reCAPTCHA v2 und v3, Cloudflare Turnstile, AWS WAF und Arkose. Bauen Sie keinen produktiven Ablauf, der auf einer GeeTest-Lösung beruht, bevor sie als live gelistet ist.
Wenn Ihr Projekt jetzt GeeTest braucht, ist der praktische Weg, die Browser- und Bildschritte selbst für Seiten zu bauen, die Sie testen dürfen, und Ihren Code so vorzubereiten, dass Sie bei Verfügbarkeit auf eine API umstellen können. In der Zwischenzeit können Sie ein Konto erstellen und mit kostenlosem Testguthaben starten, ganz ohne Karte. Damit haben Sie einen funktionierenden PopularCaptcha-Ablauf zum Testen und einen Platz, an dem Sie später GeeTest einbinden können. Die aktuellen Tarife finden Sie auf der Preisseite.
Legitime Einsatzzwecke
- Testen Ihres eigenen Login- oder Checkout-Ablaufs, wenn ein Captcha automatisierte Regressionstests blockiert.
- Prüfungen der Barrierefreiheit, die bestätigen, dass ein Besucher, der ein visuelles Puzzle nicht lösen kann, noch einen anderen Weg hat, ein Formular abzuschließen.
- Überwachung einer Website, die Sie beobachten dürfen, zum Beispiel um nach einem Deployment zu prüfen, dass ein Widget noch lädt.
Verwenden Sie Captcha-Automatisierung nicht, um Fake-Konten zu erstellen, ein Login-Formular anzugreifen oder limitierte Ware abzugreifen. Diese Nutzungen verstoßen gegen die Regeln der meisten Websites und werden von Scarnox nicht unterstützt.