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 v4 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 v4, 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.
Beim Testen von Formularen mit GeeTest CAPTCHA v4 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.
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:
In der Anfrage zur Lösung von GeeTest CAPTCHA v4 müssen die folgenden Parameter angegeben werden:
type - GeeTestTask;
websiteURL - die Seitenadresse, auf der das CAPTCHA gelöst wird;
gt - der GeeTest-Schlüssel für die Domain – der Parameter captcha_id;
version - 4;
geetestApiServerSubdomain - der Subdomain-Name des GeeTest-API-Servers (muss sich von api.geetest.com unterscheiden);
geetestGetLib - der Pfad zum CAPTCHA-Skript für dessen Anzeige auf der Seite. Wird bei manchen Websites benötigt;
initParameters - zusätzliche Parameter für Version 4, die zusammen mit „riskType“ verwendet werden (CAPTCHA-Typ/Eigenschaften der Prüfung).
https://api.capmonster.cloud/createTask{
"clientKey": "YOUR_CAPMONSTER_CLOUD_API_KEY",
"task": {
"type": "GeeTestTask",
"websiteURL": "https://gt4.geetest.com/",
"gt": "54088bb07d2df3c46b79f80300b0abbe",
"version": 4,
"initParameters": {
"riskType": "slide"
}
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId": 0,
"status": "ready",
"solution": {
"captcha_id": "f5c2ad5a8a3cf37192d8b9c039950f79",
"lot_number": "bcb2c6ce2f8e4e9da74f2c1fa63bd713",
"pass_token": "edc7a17716535a5ae624ef4707cb6e7e478dc557608b068d202682c8297695cf",
"gen_time": "1683794919",
"captcha_output": "XwmTZEJCJEnRIJBlvtEAZ662T...[cut]...SQ3fX-MyoYOVDMDXWSRQig56"
}
}
// npm install playwright @zennolab_com/capmonstercloud-client
import { chromium } from "playwright";
import {
CapMonsterCloudClientFactory,
ClientOptions,
GeeTestRequest
} from "@zennolab_com/capmonstercloud-client";
const CAPMONSTER_API_KEY = "YOUR_CAPMONSTER_API_KEY";
async function solveGeetestV4(pageUrl) {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext({ viewport: null });
const page = await context.newPage();
let detected = null;
let solutionObj = null;
// 1. /load-Antwort abfangen (captcha_id, challenge usw. ermitteln)
page.on("response", async (response) => {
const url = response.url();
if (!url.startsWith("https://gcaptcha4.geetest.com/load?")) return;
const params = new URLSearchParams(url.split("?")[1] || "");
const captchaId = params.get("captcha_id");
const challenge = params.get("challenge");
const captchaType = params.get("captcha_type");
if (captchaId && challenge) {
detected = { captchaId, challenge, captchaType };
console.log("Detected GeeTest v4 load:", detected);
}
});
// 2. Seite laden
console.log("Opening page:", pageUrl);
await page.goto(pageUrl, { waitUntil: "domcontentloaded" });
// 3. Warten, bis /load abgefangen wird
console.log("Waiting for GeeTest /load...");
while (!detected) {
await page.waitForTimeout(500);
}
// 4. Aufgabe an CapMonster Cloud senden
console.log("Sending task to CapMonster...");
const cmc = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: CAPMONSTER_API_KEY })
);
const task = new GeeTestRequest({
websiteURL: pageUrl,
gt: detected.captchaId,
challenge: detected.challenge,
version: "4",
initParameters: {
riskType: detected.captchaType || "slide"
}
});
const solveRes = await cmc.Solve(task);
const sol = solveRes.solution || solveRes;
solutionObj = {
captcha_id: sol.captcha_id || detected.captchaId,
captcha_output: sol.captcha_output,
lot_number: sol.lot_number,
pass_token: sol.pass_token
};
console.log("Got solution from CapMonster:", solutionObj);
// 5. Eigene Werte in /verify einsetzen, um eine erfolgreiche Antwort zu erhalten
await page.route("https://gcaptcha4.geetest.com/verify*", async (route) => {
console.log("Intercepted /verify, injecting fake success...");
const body = `geetest_${Date.now()}(${JSON.stringify({
status: "success",
data: {
result: "success",
seccode: {
captcha_id: solutionObj.captcha_id,
captcha_output: solutionObj.captcha_output,
lot_number: solutionObj.lot_number,
pass_token: solutionObj.pass_token
}
}
})})`;
await route.fulfill({
status: 200,
contentType: "application/javascript",
body
});
});
// 6. Benutzeraktion imitieren (z. B. auf den CAPTCHA-Button klicken)
console.log("Waiting for captcha interaction...");
await page.waitForTimeout(3000);
// Beispiel für den Aufruf der Verifizierung:
try {
await page.click('.geetest_btn'); // CAPTCHA-Schaltfläche
console.log("Clicked captcha button");
} catch {
console.log("Captcha button not found");
}
// Manchmal muss verify() manuell aufgerufen werden:
await page.evaluate(() => {
if (window.initGeetest4 && typeof verify === "function") {
verify();
}
});
console.log("Waiting for verification request...");
await page.waitForTimeout(3000);
await browser.close();
return { detected, solution: solutionObj };
}
(async () => {
const url = "https://example.com"; // Durch eine Seite mit GeeTest v4 ersetzen
const res = await solveGeetestV4(url);
console.log("FINISHED:", res);
})();
1. Registrieren Sie sich oder melden Sie sich in Ihrem GeeTest-Konto an.
2. Öffnen Sie das Captcha Dashboard und wählen Sie Behavior Verification v4:

3. Klicken Sie im Dashboard auf + Create application.
4. Geben Sie APP/website name an (den Namen der Website oder Anwendung, auf der die CAPTCHA verwendet wird), Address (die Hauptdomain der Website, auf der die CAPTCHA eingebunden wird, z. B. https://example.com) und Industry (die Kategorie der Website, z. B. „E-commerce“, „Social Media“ usw.) und klicken Sie auf Confirm.
5. Klicken Sie neben dem Namen der soeben erstellten Anwendung auf Add events. Geben Sie Event an – den Namen des konkreten Szenarios (Ereignisses), in dem die CAPTCHA verwendet wird, z. B. login, register usw.; Device – die Plattform (z. B. Web/Wap); Business types – den Typ des Einsatzszenarios der CAPTCHA (z. B. Sign-up / Sign-in – Registrierung / Anmeldung). Klicken Sie auf Add.
6. Nun erscheinen im persönlichen Bereich die ID (wird im Client und auf dem Server verwendet) und der Key (wird auf dem Server zur Prüfung verwendet) für die erstellte CAPTCHA:

7. Binden Sie die Client-Seite ein
Binden Sie das Skript ein:
<script src="https://static.geetest.com/v4/gt4.js"></script>Initialisieren Sie die CAPTCHA:
initGeetest4(
{ captchaId: "Your CaptchaId" },
function (captcha) {
captcha.appendTo("#captcha"); // in ein Element der Seite einfügen
}
);Wichtig:
<!-- CAPTCHA-Skript einbinden -->
<script src="https://static.geetest.com/v4/gt4.js"></script>
</head>
<body>
<h1>CAPTCHA Demo</h1>
<!-- Container für die CAPTCHA -->
<div id="captcha"></div>
<script>
// Initialisierung der CAPTCHA
initGeetest4(
{
captchaId: "YOUR_CAPTCHA_ID" // durch Ihre eigene CaptchaId ersetzen
},
function (captcha) {
// Die CAPTCHA in ein Seitenelement einfügen
captcha.appendTo("#captcha");
// Hier kann der erfolgreiche Durchlauf verarbeitet werden
captcha.onSuccess(function() {
const validate = captcha.getValidate();
console.log("CAPTCHA passed!", validate);
// Hier kann validate zur Prüfung an den Server gesendet werden
});
}
);
</script>
8. Richten Sie die Serverseite ein.
Wenn der Benutzer die CAPTCHA im Frontend besteht, wird ein Parametersatz generiert. Diese Parameter müssen an das Backend gesendet und anschließend über die sekundäre GeeTest-API geprüft werden, um zu bestätigen, dass die Prüfung erfolgreich war.
Sekundäre Verifizierungs-API:
http://gcaptcha4.geetest.com/validateWichtigste Anfrageparameter
{
"status": "success",
"result": "success",
"reason": "",
"captcha_args": {
"used_type": "slide",
"user_ip": "127.0.0.1",
"lot_number": "4dc3cfc2cdff448cad8d13107198d473",
"scene": "anti crawler",
"referer": "http://127.0.0.1:8077/"
}
}<?php
$captcha_id = 'YOUR_CAPTCHA_ID';
$captcha_key = 'YOUR_CAPTCHA_KEY';
$api_server = 'http://gcaptcha4.geetest.com';
// Parameter vom Frontend empfangen
$lot_number = $_POST['lot_number'] ?? '';
$captcha_output = $_POST['captcha_output'] ?? '';
$pass_token = $_POST['pass_token'] ?? '';
$gen_time = $_POST['gen_time'] ?? '';
// Signatur erzeugen
$sign_token = hash_hmac('sha256', $lot_number, $captcha_key);
// Anfragedaten erstellen
$data = [
'lot_number' => $lot_number,
'captcha_output' => $captcha_output,
'pass_token' => $pass_token,
'gen_time' => $gen_time,
'sign_token' => $sign_token
];
// Anfrage an die sekundäre Verifizierungs-API
$url = $api_server . '/validate?captcha_id=' . $captcha_id;
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
'timeout' => 5
]
];
$context = stream_context_create($options);
$result = @file_get_contents($url, false, $context);
if ($result === FALSE) {
$response = ['login' => 'fail', 'reason' => 'request geetest api fail'];
} else {
$gt_msg = json_decode($result, true);
if ($gt_msg['result'] === 'success') {
$response = ['login' => 'success', 'reason' => $gt_msg['reason']];
} else {
$response = ['login' => 'fail', 'reason' => $gt_msg['reason']];
}
}
echo json_encode($response);
?>
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 v4 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 v4 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.