В этой статье мы постарались дать ответы на все вопросы. А начать решение задачи нужно с определения того, какая система защиты используется. Для этого можно обратиться к списку популярных капч и систем антибот-защиты, где представлены визуальные примеры и ключевые признаки, которые могут помочь быстро определить, с чем вы имеете дело.
Если вы обнаружили, что на вашем сайте используется GeeTest CAPTCHA v4, следующим шагом станет более подробное изучение её свойств и самой работы. Также в этой статье вы можете изучить инструкцию по подключению системы GeeTest CAPTCHA v4, чтобы полностью разобраться, как она функционирует на вашем сайте. Это позволит не только понимать текущую защиту, но и грамотно планировать её поддержку.
При тестировании форм с GeeTest CAPTCHA v4 часто возникает необходимость проверить работу капчи и убедиться, что она корректно интегрирована.
Вы можете вручную протестировать подставленную на ваш сайт капчу.
Для автоматического распознавания капчи можно использовать специализированные сервисы, например, CapMonster Cloud — инструмент, который принимает параметры капчи, обрабатывает их на своих серверах и возвращает готовый токен. Этот токен можно подставить в форму, чтобы пройти проверку без участия пользователя.
Работа с CapMonster Cloud через API обычно включает следующие шаги:
В запросе для решения GeeTest CAPTCHA v4 необходимо указать следующие параметры:
type - GeeTestTask;
websiteURL - адрес страницы, на которой решается капча;
gt - ключ-идентификатор GeeTest для домена - параметр captcha_id;
version - 4;
geetestApiServerSubdomain - поддомен сервера Geetest API (должен отличаться от api.geetest.com);
geetestGetLib - путь к скрипту капчи для ее отображения на странице. Может потребоваться для некоторых сайтов;
initParameters - дополнительные параметры для 4 версии, используются вместе с “riskType” (тип капчи/характеристики ее проверки).
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 (определяем captcha_id, challenge и т.д.)
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. Загружаем страницу
console.log("Opening page:", pageUrl);
await page.goto(pageUrl, { waitUntil: "domcontentloaded" });
// 3. Ждём, пока поймаем /load
console.log("Waiting for GeeTest /load...");
while (!detected) {
await page.waitForTimeout(500);
}
// 4. Отправляем задачу в CapMonster Cloud
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. Подставляем свои зачения в /verify для возврата успешного ответа
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. Имитируем действие пользователя (например, кликаем по кнопке капчи)
console.log("Waiting for captcha interaction...");
await page.waitForTimeout(3000);
// Пример вызова верификации:
try {
await page.click('.geetest_btn'); // кнопка капчи
console.log("Clicked captcha button");
} catch {
console.log("Captcha button not found");
}
// Иногда нужно вызвать verify() вручную:
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"; // замените на страницу с GeeTest v4
const res = await solveGeetestV4(url);
console.log("FINISHED:", res);
})();
1. Зарегистрируйтесь или войдите в свой GeeTest аккаунт.
2. Перейдите в Captcha Dashboard, выберите Behavior Verification v4:

3. В панели управления нажмите + Create application.
4. Укажите APP/website name (название сайта или приложения, где будет использоваться капча), Address (основной домен сайта, где будет установлена капча (например, https://example.com), Industry (категория сайта, например, “E-commerce”, “Social Media” и др.), нажмите Confirm.
5. Нажмите Add events рядом с названием только что созданного приложения. Укажите Event – название конкретного сценария (события), где будет использоваться капча: например, login, register и т.д.; Device – платформа (например, Web/Wap); Business types – тип сценария применения капчи (например, Sign-up / Sign-in — регистрация / вход). Нажмите Add.
6. Теперь у вас в личном кабинете появятся ID (используется на клиенте и на сервере) и Key (используется на сервере для проверки) созданной капчи:

7. Подключите клиентскую часть
Подключите скрипт:
<script src="https://static.geetest.com/v4/gt4.js"></script>Инициализируйте CAPTCHA:
initGeetest4(
{ captchaId: "Your CaptchaId" },
function (captcha) {
captcha.appendTo("#captcha"); // вставляем в элемент страницы
}
);Важно:
<!-- Подключаем скрипт CAPTCHA -->
<script src="https://static.geetest.com/v4/gt4.js"></script>
</head>
<body>
<h1>CAPTCHA Demo</h1>
<!-- Контейнер для CAPTCHA -->
<div id="captcha"></div>
<script>
// Инициализация CAPTCHA
initGeetest4(
{
captchaId: "YOUR_CAPTCHA_ID" // замените на свой CaptchaId
},
function (captcha) {
// Вставляем CAPTCHA в элемент страницы
captcha.appendTo("#captcha");
// Можно обработать успешное прохождение
captcha.onSuccess(function() {
const validate = captcha.getValidate();
console.log("CAPTCHA passed!", validate);
// Здесь можно отправить validate на сервер для проверки
});
}
);
</script>
8. Настройте серверную часть.
Когда пользователь проходит CAPTCHA на фронтенде, генерируется набор параметров. Эти параметры нужно отправить на бэкенд и затем проверить через вторичный API GeeTest, чтобы подтвердить, что проверка успешна.
Вторичный API верификации:
http://gcaptcha4.geetest.com/validateОсновные параметры запроса
{
"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';
// Получаем параметры от фронтенда
$lot_number = $_POST['lot_number'] ?? '';
$captcha_output = $_POST['captcha_output'] ?? '';
$pass_token = $_POST['pass_token'] ?? '';
$gen_time = $_POST['gen_time'] ?? '';
// Генерируем подпись
$sign_token = hash_hmac('sha256', $lot_number, $captcha_key);
// Формируем данные для запроса
$data = [
'lot_number' => $lot_number,
'captcha_output' => $captcha_output,
'pass_token' => $pass_token,
'gen_time' => $gen_time,
'sign_token' => $sign_token
];
// Запрос к secondary verification 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);
?>
Если вам достался сайт с уже установленной капчей или другой системой защиты и при этом нет доступа к коду — ничего страшного! Определить, какая именно технология используется, достаточно легко. А для проверки корректности работы можно использовать сервис распознавания CapMonster Cloud в изолированной тестовой среде, чтобы убедиться, что механизм обработки токенов и логика проверки функционируют корректно.
В случае с GeeTest CAPTCHA v4 — достаточно распознать систему, изучить её поведение и убедиться, что защита функционирует корректно. В статье мы показали, как определить GeeTest CAPTCHA v4 и где найти инструкции по её подключению или перенастройке, чтобы уверенно поддерживать защиту и контролировать её работу.