В этой статье мы постарались дать ответы на все вопросы. А начать решение задачи нужно с определения того, какая система защиты используется. Для этого можно обратиться к списку популярных капч и систем антибот-защиты, где представлены визуальные примеры и ключевые признаки, которые могут помочь быстро определить, с чем вы имеете дело.
Если вы обнаружили, что на вашем сайте используется GeeTest CAPTCHA v3, следующим шагом станет более подробное изучение её свойств и самой работы. Также в этой статье вы можете изучить инструкцию по подключению системы GeeTest CAPTCHA v3, чтобы полностью разобраться, как она функционирует на вашем сайте. Это позволит не только понимать текущую защиту, но и грамотно планировать её поддержку.
GeeTest CAPTCHA v3 — это система защиты сайтов от автоматизированных действий, которые могут причинить вред ресурсу. Она позволяет отличать реальных пользователей от ботов, обеспечивая безопасность и стабильную работу веб-ресурса.
При тестировании форм с GeeTest CAPTCHA v3 часто возникает необходимость проверить работу капчи и убедиться, что она корректно интегрирована.
Вы можете вручную протестировать подставленную на ваш сайт капчу.
Для автоматического распознавания капчи можно использовать специализированные сервисы, например, CapMonster Cloud — инструмент, который принимает параметры капчи, обрабатывает их на своих серверах и возвращает готовый токен. Этот токен можно подставить в форму, чтобы пройти проверку без участия пользователя.
Работа с CapMonster Cloud через API обычно включает следующие шаги:
В запросе для решения GeeTest CAPTCHA v3 необходимо указать следующие параметры:
type - GeeTestTask;
websiteURL - адрес страницы, на которой пользователь проходит капчу. Корректный URL передаётся в заголовке Referer при запросе к https://api-na.geetest.com/gettype.php;
gt - ключ-идентификатор GeeTest gt для домена;
challenge - перед каждой задачей нужно отправлять запрос, из которого возвращается новое значение challenge, иначе устаревший токен вызовет ошибку ERROR_TOKEN_EXPIRED;
geetestApiServerSubdomain - поддомен сервера Geetest API (должен отличаться от api.geetest.com).
https://api.capmonster.cloud/createTask{
"clientKey":"YOUR_CAPMONSTER_CLOUD_API_KEY",
"task":
{
"type":"GeeTestTask",
"websiteURL":"https://www.example.com",
"gt":"022397c99c9f646f6477822485f30404",
"challenge":"7f044f48bc951ecfbfc03842b5e1fe59",
"geetestApiServerSubdomain":"api-na.geetest.com"
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId":0,
"status":"ready",
"solution": {
"challenge":"0f759dd1ea6c4wc76cedc2991039ca4f23",
"validate":"6275e26419211d1f526e674d97110e15",
"seccode":"510cd9735583edcb158601067195a5eb|jordan"
}
}// 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('Открываем страницу...');
await page.goto(DEMO_PAGE, { waitUntil: 'networkidle' });
console.log('Получаем параметры капчи...');
const init = await page.evaluate(async () => {
// Отправляем запрос к серверу, чтобы получить параметры init-params для GeeTest, замените на своё значение
const r = await fetch(`/api/v1/example/gee-test/init-params?t=${Date.now()}`);
return r.json();
});
console.log('Init params:', init);
console.log('Создаем задачу для CapMonster Cloud...');
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('Решение капчи:', sol);
console.log('Подставляем решение в скрытые поля...');
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"]'); // замените на своё значение
console.log('Отправляем verify-запрос на сервер...');
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
};
// замените на своё значение
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('Результат проверки капчи:', result);
await page.waitForTimeout(3000);
await browser.close();
})();1. Зарегистрируйтесь или войдите в свой GeeTest аккаунт.
2. Перейдите в Captcha Dashboard, выберите CAPTCHA v3:

3. Нажмите +New Captcha, чтобы создать новую капчу. Укажите название капчи (например, продукт или проект), URL сайта, где будет интегрирована капча и выберите контекст использования капчи (например, Вход / Регистрация / Восстановление пароля и т.д.).
4. Вы получите уникальные CAPTCHA ID и KEY. Их можно настроить в панели безопасности.

5. Настройте серверную часть (Server SDK):
Сервер работает с двумя API:
<?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: Инициализация
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: Проверка
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. Подключите клиентскую часть (Client SDK):
На клиенте вы загружаете gt.js и вызываете initGeetest, передавая параметры с сервера (API1). Пример с использованием ajax:
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');
}
});
});
});
}
});
Проверка работы
Убедитесь, что:
Failback (резервный режим)
Если сервер GeeTest недоступен:
Если вам достался сайт с уже установленной капчей или другой системой защиты и при этом нет доступа к коду — ничего страшного! Определить, какая именно технология используется, достаточно легко. А для проверки корректности работы можно использовать сервис распознавания CapMonster Cloud в изолированной тестовой среде, чтобы убедиться, что механизм обработки токенов и логика проверки функционируют корректно.
В случае с GeeTest CAPTCHA v3 — достаточно распознать систему, изучить её поведение и убедиться, что защита функционирует корректно. В статье мы показали, как определить GeeTest CAPTCHA v3 и где найти инструкции по её подключению или перенастройке, чтобы уверенно поддерживать защиту и контролировать её работу.