GeeTest CAPTCHA v3
и CapMonster Cloud

Решение капчи, установка на сайт и тестирование.

Стоимость решения GeeTest CAPTCHA v3

Тип капчи
Цена (РУБ)
₽ 101.04
1000 токенов
Вам достался «по наследству» сайт с подключённой капчей или другой защитой, но доступа к исходному коду нет? В такой ситуации возникают вопросы: какую именно систему защиты использует сайт, правильно ли она установлена и как проверить её работу?

В этой статье мы постарались дать ответы на все вопросы. А начать решение задачи нужно с определения того, какая система защиты используется. Для этого можно обратиться к списку популярных капч и систем антибот-защиты, где представлены визуальные примеры и ключевые признаки, которые могут помочь быстро определить, с чем вы имеете дело.

Если вы обнаружили, что на вашем сайте используется GeeTest CAPTCHA v3, следующим шагом станет более подробное изучение её свойств и самой работы. Также в этой статье вы можете изучить инструкцию по подключению системы GeeTest CAPTCHA v3, чтобы полностью разобраться, как она функционирует на вашем сайте. Это позволит не только понимать текущую защиту, но и грамотно планировать её поддержку.

Что такое GeeTest CAPTCHA v3
Что такое GeeTest CAPTCHA v3

GeeTest CAPTCHA v3 — это система защиты сайтов от автоматизированных действий, которые могут причинить вред ресурсу. Она позволяет отличать реальных пользователей от ботов, обеспечивая безопасность и стабильную работу веб-ресурса.

Background
Виды GeeTest CAPTCHA v3
Intelligent mode
Intelligent mode
Проверка пользователя происходит преимущественно на основе поведения и взаимодействия с сайтом, без выполнения заданий.
Slide CAPTCHA
Slide CAPTCHA
Слайдер, который нужно переместить, чтобы собрать пазл или сопоставить элемент изображения.
Icon CAPTCHA
Icon CAPTCHA
Выбор изображений в указанном порядке.
Space CAPTCHA
Space CAPTCHA
Перемещение фигуры на изображении в нужное место.

Как решить GeeTest CAPTCHA v3 через CapMonster Cloud

При тестировании форм с GeeTest CAPTCHA v3 часто возникает необходимость проверить работу капчи и убедиться, что она корректно интегрирована.

Вы можете вручную протестировать подставленную на ваш сайт капчу.

  • Откройте страницу с формой и убедитесь, что капча отображается.
  • Попробуйте отправить форму без её прохождения — сервер должен выдать ошибку.
  • После успешного решения капчи — форма должна отправиться без ошибок.

Для автоматического распознавания капчи можно использовать специализированные сервисы, например, CapMonster Cloud — инструмент, который принимает параметры капчи, обрабатывает их на своих серверах и возвращает готовый токен. Этот токен можно подставить в форму, чтобы пройти проверку без участия пользователя.

Работа с CapMonster Cloud через API обычно включает следующие шаги:

Создание задачи (Task)Создание задачи (Task)
arrow
Отправка запроса к APIОтправка запроса к API
arrow
Получение результатаПолучение результата
arrow
Подстановка токена на страницуПодстановка токена на страницу
arrow
Распознавание GeeTest CAPTCHA v3 с использованием готовых библиотек
Сервис CapMonster Cloud предоставляет готовые библиотеки для удобной работы на языках Python, JavaScript (Node.js) и C#.
Python
JavaScript
C#
Решение, подстановка токена и отправка формы
Пример на Node.js для полного цикла распознавания капчи на вашей веб-странице. Возможные подходы: использовать HTTP-запросы для получения HTML и параметров капчи, отправить ответ и обработать результат; или с помощью инструментов для автоматизации (например, Playwright) — открыть страницу, дождаться капчи, отправить параметры (для тестирования вы можете отправить как правильные, так и некорректные данные), получить решение через клиент CapMonster Cloud, подставить токен в форму и увидеть результат.
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('Открываем страницу...');
  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();
})();
Как подключить GeeTest CAPTCHA v3 к своему сайту
Чтобы уверенно ориентироваться в работе капчи на вашем сайте, понимать логику её проверки, заново подключить или перенастроить, рекомендуем вам изучить этот раздел. В нём описан процесс подключения защиты — это поможет быстро разобраться во всех нюансах.

1. Зарегистрируйтесь или войдите в свой GeeTest аккаунт.

2. Перейдите в Captcha Dashboard, выберите CAPTCHA v3:

HowTo Connect image 1

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

4. Вы получите уникальные CAPTCHA ID и KEY. Их можно настроить в панели безопасности.

HowTo Connect image 2

5. Настройте серверную часть (Server SDK):

Сервер работает с двумя API:

  • API1 — инициализация (создание challenge)
  • API2 — проверка результата после прохождения капчи

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: Инициализация
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:

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');
                    }
                });
            });
        });
    }
});

Проверка работы

Убедитесь, что:

  • /register возвращает challenge
  • Капча отображается корректно
  • После прохождения капчи в консоли браузера виден запрос на /validate
  • Сервер возвращает "success": true

Failback (резервный режим)

Если сервер GeeTest недоступен:

  • Клиент получает success: false
  • Капча переключается в локальный режим (работает без подключения к GeeTest Cloud). Чтобы протестировать — просто подставьте неверный CAPTCHA_ID (например, 123456789)

Background
Возможные ошибки и отладка
Bug Icon
Неверные параметры
Капча не отображается или возвращает ошибку invalid-gt / invalid-challenge. Проверьте, что используются актуальные gt и challenge для вашей страницы.
Bug Icon
Таймаут решения
Решение капчи не было получено вовремя. Увеличьте время ожидания при использовании сервисов автоматического решения (например, CapMonster).
Bug Icon
Пустые поля
challenge, validate или seccode не переданы на страницу. Убедитесь, что они корректно подставляются в скрытые поля формы.
Bug Icon
Ответ success=false
Токен устарел, был повторно использован или поддельный. Для диагностики включите логирование запросов и проверяйте возвращаемые сервером поля (error-codes при работе с CapMonster или вашим сервером проверки).
Проверка устойчивости защиты
После интеграции важно убедиться, что система действительно защищает сайт от автоматических действий.
Рекомендации по безопасности и оптимизации
Храните <span class="font-bold">ключ капчи (секретный KEY) только на сервере</span>, не передавайте его в клиентскую часть.
Логируйте коды ошибок при проверке (<span class="font-bold">error-codes</span> или поля ответа сервера), чтобы понимать причины неудачных проверок.
Добавьте внизу формы ссылки на <span class="font-bold">Политику конфиденциальности</span> и <span class="font-bold">Условия использования GeeTest</span>, если требуется по лицензии или внутренним требованиям.
Заключение

Если вам достался сайт с уже установленной капчей или другой системой защиты и при этом нет доступа к коду — ничего страшного! Определить, какая именно технология используется, достаточно легко. А для проверки корректности работы можно использовать сервис распознавания CapMonster Cloud в изолированной тестовой среде, чтобы убедиться, что механизм обработки токенов и логика проверки функционируют корректно.

В случае с GeeTest CAPTCHA v3 — достаточно распознать систему, изучить её поведение и убедиться, что защита функционирует корректно. В статье мы показали, как определить GeeTest CAPTCHA v3 и где найти инструкции по её подключению или перенастройке, чтобы уверенно поддерживать защиту и контролировать её работу.

Conclusion
Полезные ссылки
DocIconДокументация GeeTest v3DocIconДокументация CapMonster Cloud (работа с GeeTest v3)DocIconСоздание аккаунта в GeeTestDocIconСоздание аккаунта в CapMonster Cloud

Частые вопросы о GeeTest CAPTCHA v3

Значения challenge живут недолго — обычно меньше двух минут. Передача устаревшего challenge в createTask — самая частая причина ERROR_TOKEN_EXPIRED. Получайте свежий challenge из init-params endpoint сайта как можно ближе к каждому вызову createTask — без кэширования и повторного использования.

Важно: задачи, которые возвращают ERROR_TOKEN_EXPIRED, всё равно учитываются как оплачиваемые.

Опрос https://api.capmonster.cloud/getTaskResult возвращает объект solution с тремя полями (значения всегда будут разными):

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

Перед отправкой формы сопоставьте их со скрытыми input geetest_challenge, geetest_validate и geetest_seccode соответственно. Вставить их можно через Playwright, Puppeteer, Selenium или обычный HTTP-клиент.

Примечание: опрашивайте результат с регулярным интервалом и не превышайте 120 запросов на задачу, чтобы избежать блокировки аккаунта. В зависимости от нагрузки системы ответ обычно приходит в течение 10–30 секунд.

Чтобы понять логику автоматизации, полезно сначала найти эти параметры вручную:

  1. Откройте DevTools → вкладку Network.
  2. Отфильтруйте запросы по init-params и перезагрузите страницу.
  3. JSON-ответ будет содержать gt и challenge. Именно этот endpoint должна перехватывать ваша автоматизация.

Для автоматизации через Playwright или другой headless browser перехватывайте ответ init-params на уровне сети: это быстрее и надёжнее DOM-парсинга. Затем распарсьте JSON и возьмите gt и challenge.

Готовые скрипты извлечения доступны в документации CapMonster Cloud.

GeeTest v3 включает offline/bypass mode, когда его серверы проверки недоступны. В этом режиме виджет всё равно отображается и пользователь может с ним взаимодействовать, но клиентская и серверная проверка сайта выполняются локально.

На автоматические сценарии решения это не влияет.

Да. CapMonster Cloud можно использовать в автоматизированных сценариях GeeTest CAPTCHA v3, когда нужно проверять отправку форм, QA-сценарии или поведение под нагрузкой без ручного взаимодействия.

Используйте свежие gt и challenge для каждой задачи, вставляйте challenge, validate и seccode в соответствующие поля и отслеживайте процент отклонений в целевой среде. Актуальные тарифы смотрите на странице цен.