GeeTest CAPTCHA v3
und CapMonster Cloud

Lösung von Captchas, Integration in die Website und Testing.

Preise für GeeTest CAPTCHA v3-Lösung

CAPTCHA
Preis (USD)
$ 1.20
1000 Token
Sie haben eine Website mit eingebauter Captcha- oder Bot-Schutzlösung übernommen, aber keinen Zugriff auf den Quellcode? Dann stellt sich schnell die Frage: Welche Lösung ist installiert, ist sie korrekt konfiguriert und wie lässt sie sich testen?

In diesem Artikel haben wir versucht, alle wichtigen Fragen zu beantworten. Der erste Schritt bei der Lösung der Aufgabe besteht darin festzustellen, welches Schutzsystem eingesetzt wird. Dazu können Sie die Liste beliebter Captchas und Anti-Bot-Schutzsysteme heranziehen, in der visuelle Beispiele und zentrale Merkmale aufgeführt sind, die Ihnen helfen, schnell zu erkennen, womit Sie es zu tun haben.

Wenn Sie feststellen, dass auf Ihrer Website GeeTest CAPTCHA v3 eingesetzt wird, besteht der nächste Schritt darin, seine Eigenschaften und Funktionsweise genauer zu untersuchen. Ebenfalls in diesem Artikel finden Sie eine Anleitung zur Integration von GeeTest CAPTCHA v3, damit Sie vollständig verstehen, wie das System auf Ihrer Website arbeitet. So können Sie nicht nur den aktuellen Schutz besser einschätzen, sondern auch seine Wartung vorausschauend planen.

Was ist GeeTest CAPTCHA v3
Was ist GeeTest CAPTCHA v3

GeeTest CAPTCHA v3 ist ein Schutzsystem für Websites vor automatisierten Aktionen, die der Ressource schaden können. Es hilft dabei, echte Nutzer von Bots zu unterscheiden und sorgt so für Sicherheit und einen stabilen Betrieb der Webressource.

.
Background
Beispiele von GeeTest CAPTCHA v3
Intelligent mode
Intelligent mode
Die Überprüfung des Nutzers erfolgt hauptsächlich auf Basis des Verhaltens und der Interaktion mit der Website, ohne Aufgaben lösen zu müssen.
Slide CAPTCHA
Slide CAPTCHA
Ein Schieberegler, den man bewegen muss, um ein Puzzle zusammenzusetzen oder ein Bildelement auszurichten.
Icon CAPTCHA
Icon CAPTCHA
Auswahl von Bildern in der angegebenen Reihenfolge.
Space CAPTCHA
Space CAPTCHA
Verschieben einer Figur an die richtige Stelle im Bild.

Wie man GeeTest CAPTCHA v3 mit CapMonster Cloud löst

Beim Testen von Formularen mit GeeTest CAPTCHA v3 müssen Sie häufig prüfen, ob die Captcha korrekt eingebunden ist und funktioniert.

Sie können die auf Ihrer Seite eingebettete Captcha manuell testen.

  • Öffnen Sie die Formularseite und stellen Sie sicher, dass die Captcha angezeigt wird.
  • Versuchen Sie, das Formular ohne Lösung abzuschicken – der Server sollte einen Fehler melden.
  • Nach einer erfolgreichen Lösung muss das Formular ohne Probleme übermittelt werden.

Für automatisches Lösen können Sie Tools wie CapMonster Cloud einsetzen. Der Dienst nimmt die Captcha-Parameter entgegen, verarbeitet sie auf seinen Servern und liefert einen einsatzbereiten Token zurück. Diesen Token setzen Sie ins Formular ein, um die Prüfung ohne Benutzerinteraktion zu bestehen.

Die Arbeit mit CapMonster Cloud über die API umfasst in der Regel folgende Schritte:

Aufgabe erstellenAufgabe erstellen
arrow
API-Anfrage sendenAPI-Anfrage senden
arrow
Ergebnis empfangenErgebnis empfangen
arrow
Token auf der Seite einsetzenToken auf der Seite einsetzen
arrow
Erkennung von GeeTest CAPTCHA v3 mit fertigen Bibliotheken
Der Dienst CapMonster Cloud stellt fertige Bibliotheken für eine komfortable Arbeit mit Python, JavaScript (Node.js) und C# bereit.
Python
JavaScript
C#
Lösung, Token-Einfügung und Formularversand
Beispiel in Node.js für den vollständigen Erkennungszyklus des Captchas auf Ihrer Webseite. Mögliche Ansätze: HTTP-Requests verwenden, um HTML und Captcha-Parameter zu erhalten, die Antwort zu senden und das Ergebnis zu verarbeiten; oder Automatisierungstools (z. B. Playwright) verwenden — Seite öffnen, auf das Captcha warten, Parameter senden (zu Testzwecken können Sie sowohl korrekte als auch falsche Daten senden), die Lösung über den CapMonster-Cloud-Client abrufen, den Token in das Formular einfügen und das Ergebnis ansehen.
python
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium

import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, GeeTestRequest } from '@zennolab_com/capmonstercloud-client';

const API_KEY = 'your_capmonster_cloud_api_key';
const DEMO_PAGE = 'https://example.com';

(async () => {
  const browser = await chromium.launch({ headless: false });
  const page = await browser.newPage();

  console.log('Seite wird geöffnet...');
  await page.goto(DEMO_PAGE, { waitUntil: 'networkidle' });

  console.log('Captcha-Parameter werden abgerufen...');
  const init = await page.evaluate(async () => {
    // Request an den Server senden, um init-params für GeeTest zu erhalten; durch Ihren Wert ersetzen
    const r = await fetch(`/api/v1/example/gee-test/init-params?t=${Date.now()}`);  
    return r.json();
  });
  console.log('Init params:', init);

  console.log('Aufgabe für CapMonster Cloud wird erstellt...');
  const cmc = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
  const solRaw = await cmc.Solve(new GeeTestRequest({ websiteURL: DEMO_PAGE, gt: init.gt, challenge: init.challenge }));
  const sol = solRaw.solution || solRaw;
  console.log('Captcha-Lösung:', sol);

  console.log('Lösung in die versteckten Felder eintragen...');
  await page.evaluate(s => {
    ['challenge','validate','seccode'].forEach(n => {
      const el = document.querySelector(`input[name="geetest_${n}"]`);
      if(el) el.value = s[n];
    });
  }, sol);

  await page.click('button[data-action="test_action"]'); // durch Ihren Wert ersetzen
  console.log('Verify-Request an den Server senden...');
  const result = await page.evaluate(async () => {
    const payload = {
      geetest_challenge: document.querySelector('input[name="geetest_challenge"]')?.value,
      geetest_validate: document.querySelector('input[name="geetest_validate"]')?.value,
      geetest_seccode: document.querySelector('input[name="geetest_seccode"]')?.value
    };
    // durch Ihren Wert ersetzen
    const r = await fetch('/api/v1/example/gee-test/verify', { 
      method:'POST', 
      headers:{'Content-Type':'application/json'}, 
      body: JSON.stringify(payload) 
    });
    return r.json();
  });

  console.log('Ergebnis der Captcha-Überprüfung:', result);

  await page.waitForTimeout(3000);
  await browser.close();
})();
Wie man GeeTest CAPTCHA v3 in die eigene Website integriert
Damit Sie sich sicher in der Arbeit des Captchas auf Ihrer Website zurechtfinden, die Logik der Validierung verstehen und die Integration erneut vornehmen oder neu konfigurieren können, empfehlen wir Ihnen, diesen Abschnitt zu studieren. Er beschreibt den Einrichtungsprozess des Schutzes – so können Sie alle Details schnell nachvollziehen.

1. Registrieren Sie sich oder melden Sie sich in Ihrem GeeTest-Konto an.

2. Wechseln Sie zum Captcha Dashboard und wählen Sie CAPTCHA v3:

HowTo Connect image 1

3. Klicken Sie auf +New Captcha, um ein neues Captcha zu erstellen. Geben Sie den Captcha-Namen (z. B. Produkt oder Projekt), die URL der Website, auf der das Captcha integriert wird, und den Nutzungskontext (z. B. Login / Registrierung / Passwort-Wiederherstellung usw.) an.

4. Sie erhalten eine eindeutige CAPTCHA ID und einen KEY. Diese können im Sicherheitsbereich konfiguriert werden.

HowTo Connect image 2

5. Konfigurieren Sie die Serverseite (Server SDK):

Der Server arbeitet mit zwei APIs:

  • API1 – Initialisierung (Erstellung des challenge)
  • API2 – Überprüfung des Ergebnisses nach Bestehen des Captchas

php
<?php
header('Content-Type: application/json');

const CAPTCHA_ID = '07df3141a35**********19a473d7c50';
const CAPTCHA_KEY = '543b19036ef********8e07d121b81e9';

$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

function getJson($url) {
    $res = @file_get_contents($url);
    return $res ? json_decode($res, true) : null;
}

// API1: Initialisierung
if ($path === '/register') {
    $data = getJson("https://api.geetest.com/register.php?gt=" . CAPTCHA_ID . "&json_format=1");
    echo json_encode($data ? [
        'gt' => CAPTCHA_ID,
        'challenge' => $data['challenge'],
        'success' => $data['success'] === 1,
        'new_captcha' => true
    ] : ['success' => 0]);
    exit;
}

// API2: Überprüfung
if ($path === '/validate' && $_SERVER['REQUEST_METHOD'] === 'POST') {
    $req = json_decode(file_get_contents('php://input'), true);
    $data = getJson("https://api.geetest.com/validate.php?" . http_build_query([
        'seccode' => $req['geetest_seccode'] ?? '',
        'challenge' => $req['geetest_challenge'] ?? '',
        'gt' => CAPTCHA_ID,
        'json_format' => 1
    ]));
    echo json_encode(['success' => !empty($data['seccode'])]);
    exit;
}

http_response_code(404);
echo json_encode(['error' => 'Not found']);

6. Binden Sie die Client-Seite ein (Client SDK):

Auf der Client-Seite laden Sie gt.js und rufen initGeetest auf, wobei Sie die Parameter vom Server (API1) übergeben. Beispiel mit ajax:

javascript
ajax({
    url: "https://example.com/register",
    type: "get",
    dataType: "json",
    success: function (data) {
        initGeetest({
            gt: data.gt,
            challenge: data.challenge,
            offline: !data.success,
            new_captcha: true
        }, function (captchaObj) {
            captchaObj.appendTo("#captcha");

            captchaObj.onSuccess(function () {
                const result = captchaObj.getValidate();
                ajax({
                    url: "https://example.com/validate",
                    type: "post",
                    contentType: "application/json",
                    data: JSON.stringify(result),
                    success: function(res) {
                        if (res.success) alert('CAPTCHA passed');
                        else alert('CAPTCHA failed');
                    }
                });
            });
        });
    }
});

Funktionsprüfung

Stellen Sie sicher, dass:

  • /register ein challenge zurückgibt
  • das Captcha korrekt angezeigt wird
  • nach Bestehen des Captchas in der Browserkonsole ein Request an /validate sichtbar ist
  • der Server "success": true zurückgibt

Failback (Fallback-Modus)

Wenn der GeeTest-Server nicht verfügbar ist:

  • erhält der Client success: false
  • wechselt das Captcha in den lokalen Modus (funktioniert ohne Verbindung zur GeeTest Cloud). Um dies zu testen, setzen Sie einfach eine falsche CAPTCHA_ID (z. B. 123456789) ein.

Background
Mögliche Fehler und Debugging
Bug Icon
Falsche Parameter
Das Captcha wird nicht angezeigt oder gibt den Fehler invalid-gt / invalid-challenge zurück. Prüfen Sie, ob aktuelle gt- und challenge-Werte für Ihre Seite verwendet werden.
Bug Icon
Timeout bei der Lösung
Die Captcha-Lösung wurde nicht rechtzeitig erhalten. Erhöhen Sie die Wartezeit, wenn Sie automatische Lösevorgänge (z. B. CapMonster) verwenden.
Bug Icon
Leere Felder
challenge, validate oder seccode werden nicht an die Seite übergeben. Stellen Sie sicher, dass sie korrekt in versteckte Formularfelder eingetragen werden.
Bug Icon
Antwort success=false
Der Token ist abgelaufen, wurde erneut verwendet oder ist gefälscht. Aktivieren Sie zur Diagnose das Request-Logging und prüfen Sie die vom Server zurückgegebenen Felder (error-codes bei der Arbeit mit CapMonster oder Ihrem Prüfserver).
Tests der Schutzstabilität
Stellen Sie nach der Integration sicher, dass das System die Website wirklich vor automatisierten Aktionen schützt.
Tipps zu Sicherheit und Optimierung
Speichern Sie den <span class="font-bold">Captcha-Schlüssel (geheimer KEY) nur auf dem Server</span> und geben Sie ihn nicht an die Client-Seite weiter.
Protokollieren Sie Fehlercodes bei der Überprüfung (<span class="font-bold">error-codes</span> oder Antwortfelder des Servers), um die Ursachen fehlgeschlagener Prüfungen zu verstehen.
Fügen Sie am unteren Rand des Formulars Links zur <span class="font-bold">Datenschutzerklärung</span> und zu den <span class="font-bold">Nutzungsbedingungen von GeeTest</span> hinzu, falls dies durch Lizenz oder interne Richtlinien erforderlich ist.
Fazit

Wenn Sie eine Website übernommen haben, auf der bereits ein Captcha oder ein anderes Schutzsystem installiert ist und Sie keinen Zugriff auf den Code haben, ist das kein Problem! Es ist ziemlich einfach festzustellen, welche Technologie genau verwendet wird. Und um die korrekte Funktionsweise zu überprüfen, können Sie den Erkennungsdienst CapMonster Cloud in einer isolierten Testumgebung nutzen, um sicherzustellen, dass der Mechanismus zur Tokenverarbeitung und die Prüflogik ordnungsgemäß funktionieren.

Im Fall von GeeTest CAPTCHA v3 reicht es aus, das System zu erkennen, sein Verhalten zu analysieren und sich zu vergewissern, dass der Schutz korrekt arbeitet. In diesem Artikel haben wir gezeigt, wie Sie GeeTest CAPTCHA v3 identifizieren und wo Sie Anleitungen für die Einbindung oder Neukonfiguration finden, damit Sie den Schutz zuverlässig betreiben und seine Arbeit unter Kontrolle halten können.

Conclusion
Nützliche Links
DocIconGeeTest v3 DokumentationDocIconCapMonster-Cloud-Dokumentation (Arbeit mit GeeTest v3)DocIconKonto bei GeeTest erstellenDocIconKonto bei CapMonster Cloud erstellen

Häufig gestellte Fragen zu GeeTest CAPTCHA v3

Challenge-Werte haben eine kurze Lebensdauer — typischerweise unter zwei Minuten. Die Übergabe eines veralteten challenge an createTask ist die häufigste Ursache für ERROR_TOKEN_EXPIRED. Holen Sie vor jedem createTask-Aufruf so früh wie möglich einen neuen challenge vom init-params-Endpunkt der Website ab — kein Caching, keine Wiederverwendung.

Wichtig: Aufgaben, die ERROR_TOKEN_EXPIRED zurückgeben, werden dennoch als abgerechnet gezählt.

Das Abfragen von https://api.capmonster.cloud/getTaskResult liefert ein solution-Objekt mit drei Feldern (die Werte sind immer unterschiedlich):

json
{
  "solution": {
    "challenge": "0f759dd1ea6c4wc76cedc2991039ca4f23",
    "validate": "6275e26419211d1f526e674d97110e15",
    "seccode": "510cd9735583edcb158601067195a5eb|jordan"
  }
}

Ordnen Sie sie vor dem Absenden des Formulars den versteckten Eingabefeldern geetest_challenge, geetest_validate und geetest_seccode zu. Sie können sie mit Playwright, Puppeteer, Selenium oder einem einfachen HTTP-Client injizieren.

Hinweis: Fragen Sie in regelmäßigen Abständen ab und überschreiten Sie nicht 120 Anfragen pro Aufgabe, um eine Kontosperrung zu vermeiden. Je nach Systemlast erfolgt die Antwort in der Regel innerhalb von 10 bis 30 Sekunden.

Um die Automatisierungslogik zu verstehen, hilft es, diese Parameter manuell zu finden:

  1. DevTools → Registerkarte Network öffnen.
  2. Nach init-params filtern und die Seite neu laden.
  3. Die JSON-Antwort enthält sowohl gt als auch challenge. Diesen Endpunkt muss Ihre Automatisierung abfangen.

Für die Automatisierung mit Playwright oder einem anderen Headless-Browser fangen Sie die init-params-Antwort auf Netzwerkebene ab — das ist schneller und zuverlässiger als DOM-Parsing. Parsen Sie anschließend die JSON-Nutzlast nach gt und challenge.

Fertige Extraktionsskripte finden Sie in der CapMonster-Cloud-Dokumentation.

GeeTest v3 aktiviert den Offline-/Bypass-Modus, wenn seine Verifizierungsserver nicht erreichbar sind. In diesem Modus wird das Widget weiterhin gerendert und der Nutzer kann damit interagieren, aber die client- und serverseitige Verifizierung der Website erfolgt lokal.

Er hat keinen Einfluss auf automatisierte Lösungs-Workflows.

Ja. CapMonster Cloud kann in automatisierten GeeTest-CAPTCHA-v3-Workflows eingesetzt werden, wenn Sie Formularübermittlungen, QA-Szenarien oder Lasttest-Verhalten ohne manuelle Interaktion validieren müssen.

Verwenden Sie für jede Aufgabe frische gt- und challenge-Werte, injizieren Sie challenge, validate und seccode in die entsprechenden Felder und überwachen Sie die Ablehnungsrate in Ihrer Zielumgebung. Aktuelle Tarife finden Sie auf der Preisseite.