Looking for international version of our service? Go to 2captcha.com

Логотип «RuCaptcha»Перейти на главную страницу
Туториалы по обходу капчи

Эта статья была полезной?

Как обойти и решить капчу GeeTest v3 автоматически

Катя Пушкарёва

Технический специалист

Как распознать, решить обойти капчу GeeTest автоматически

Введение

Если вы автоматизируете взаимодействие с сайтами, защищёнными капчей GeeTest версии 3, это руководство поможет вам настроить интеграцию с сервисом RuCaptcha.

GeeTest V3 — это система защиты, которая использует интерактивные задачи (чаще всего слайдер-пазл) в сочетании с поведенческим анализом. Ключевая особенность версии 3: динамический параметр challenge, который меняется для каждой сессии и требует получения нового значения перед каждым запросом к API.

В статье мы разберём оба метода отправки задач: без прокси (GeeTestTaskProxyless) и с прокси (GeeTestTask), а также покажем актуальные примеры запросов в формате JSON.

Общие сведения

Что такое GeeTest V3

GeeTest V3 — это популярная система капчи, которая комбинирует визуальную задачу с анализом поведения пользователя. Основные особенности:

  • Динамический параметр challenge, который необходимо извлекать для каждой сессии
  • Статический публичный ключ gt для каждого сайта
  • Возвращает три токена: geetest_challenge, geetest_validate, geetest_seccode
  • Поддержка как proxyless, так и proxy-режима

Типы задач в API RuCaptcha

Тип задачи Описание Когда использовать
GeeTestTaskProxyless Решение через внутренние прокси RuCaptcha Если сайт не блокирует дата-центры и не требует резидентные IP
GeeTestTask Решение с указанием вашего прокси Если сайт проверяет геолокацию, блокирует облачные IP или требует сессии

Параметры задачи GeeTest V3

Параметр Тип Обязательно Описание
type String Да GeeTestTaskProxyless или GeeTestTask
websiteURL String Да Полный URL страницы, где загружается капча
gt String Да Публичный ключ GeeTest, статическое значение для сайта
challenge String Да Динамический токен вызова, получается с целевого сайта
geetestApiServerSubdomain String Нет Кастомный домен API, например api-na.geetest.com
userAgent String Нет User-Agent браузера, который загружает капчу
proxyType String Нет* Тип прокси: http, https, socks4, socks5
proxyAddress String Нет* IP-адрес прокси
proxyPort String Нет* Порт прокси
proxyLogin String Нет* Логин прокси, если требуется авторизация
proxyPassword String Нет* Пароль прокси, если требуется авторизация

* Обязательны только при использовании типа задачи GeeTestTask

Подготовка окружения

Требования к запросам

Для работы с API RuCaptcha вам понадобится:

  • API-ключ из личного кабинета rucaptcha.com
  • HTTPS-клиент для отправки POST-запросов (curl, Postman, библиотека в вашем языке)
  • Валидные gt и challenge с целевого сайта
  • Полный URL страницы, где отображается капча
  • Прокси (опционально, но рекомендуется для стабильности)

Получение API-ключа

  1. Авторизуйтесь в личном кабинете RuCaptcha
  2. Перейдите в раздел настроек аккаунта
  3. Скопируйте ваш clientKey (API-ключ)
  4. Для безопасности храните ключ в переменной окружения, а не в коде

Анализ страницы

Поиск параметра gt

Параметр gt является статическим и обычно содержится в исходном коде страницы.

Способ 1: через DevTools

  1. Откройте целевую страницу в браузере
  2. Нажмите F12 для открытия инструментов разработчика
  3. Перейдите на вкладку Elements
  4. Найдите вызов функции initGeetest

Пример JavaScript:

javascript Copy
initGeetest({
    gt: "81388ea1fc187e0c335c0a8907ff2625",
    challenge: "2e2f0f65240058b683cb6ea21c303eea6n",
    // другие параметры
});

Значение поля gt — это статический ключ сайта.

Способ 2: через исходный код

Используйте поиск по странице (Ctrl+F) для нахождения строки gt: или data-geetest.

Получение динамического challenge

Параметр challenge является одноразовым и динамическим. Его необходимо получать заново перед каждым запросом к API.

Способ 1: через вкладку Network

  1. В DevTools перейдите на вкладку Network
  2. Обновите страницу с капчей
  3. Отфильтруйте запросы по geetest или get.php
  4. Найдите запрос к api.geetest.com/get.php — параметр challenge будет в ответе или в параметрах запроса

Способ 2: программное получение

Выполните запрос к эндпоинту, который возвращает параметры инициализации капчи. Обычно это:

Copy
GET https://api.geetest.com/get.php?gt=ВАШ_GT&callback=geetest_123456

Важно: не кэшируйте значение challenge. После использования оно становится недействительным.

Проверка websiteURL

Убедитесь, что вы указываете полный URL страницы, включая протокол:

  • Правильно: https://example.com/login
  • Неправильно: example.com/login или /login

API не открывает страницу самостоятельно, поэтому она может быть доступна только авторизованным пользователям — это не помешает решению.

Реализация

Пример запроса: GeeTestTaskProxyless (без прокси)

Метод: createTask
Эндпоинт: https://api.rucaptcha.com/createTask

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GeeTestTaskProxyless",
    "websiteURL": "https://example.com/login",
    "gt": "81388ea1fc187e0c335c0a8907ff2625",
    "challenge": "2e2f0f65240058b683cb6ea21c303eea6n"
  }
}

Пример запроса: GeeTestTask (с прокси)

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GeeTestTask",
    "websiteURL": "https://example.com/login",
    "gt": "81388ea1fc187e0c335c0a8907ff2625",
    "challenge": "2e2f0f65240058b683cb6ea21c303eea6n",
    "proxyType": "http",
    "proxyAddress": "1.2.3.4",
    "proxyPort": "8080",
    "proxyLogin": "user23",
    "proxyPassword": "p4$w0rd"
  }
}

Получение результата

После создания задачи используйте метод getTaskResult для получения решения.

Эндпоинт: https://api.rucaptcha.com/getTaskResult

Запрос:

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "taskId": 74455221488
}

Успешный ответ:

json Copy
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "geetest_challenge": "2e2f0f65240058b683cb6ea21c303eea6n",
    "geetest_validate": "a1b2c3d4e5f6g7h8i9j0",
    "geetest_seccode": "k1l2m3n4o5p6q7r8s9t0|jigsaw"
  },
  "cost": "0.00299",
  "ip": "1.2.3.4",
  "createTime": 1692863536,
  "endTime": 1692863556,
  "solveCount": 1
}

Использование решения на целевом сайте

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

  • geetest_challenge
  • geetest_validate
  • geetest_seccode

Эти значения часто передаются в теле POST-запроса или в заголовках. Перехватите оригинальный запрос через DevTools (вкладка Network) и воспроизведите его, подставив полученные токены.

Пояснения к параметрам

Динамический challenge

Параметр challenge является одноразовым. После того как капча была загружена на странице, это значение становится недействительным.

Правило: получайте новый challenge перед каждым запросом к API RuCaptcha.

Для этого необходимо:

  1. Проанализировать сетевые запросы целевого сайта при загрузке страницы
  2. Найти запрос, который возвращает новый challenge
  3. Воспроизводить этот запрос перед созданием задачи в API

Кастомный домен API

Некоторые сайты используют кастомные домены для загрузки скриптов GeeTest. Если вы видите в исходном коде домен, отличный от api.geetest.com, укажите его в параметре geetestApiServerSubdomain:

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GeeTestTaskProxyless",
    "websiteURL": "https://example.com",
    "gt": "81388ea1fc187e0c335c0a8907ff2625",
    "challenge": "2e2f0f65240058b683cb6ea21c303eea6n",
    "geetestApiServerSubdomain": "api-na.geetest.com"
  }
}

Прокси-настройки

Если вы используете тип задачи GeeTestTask, убедитесь, что:

  • Прокси поддерживает HTTPS и не требует дополнительного подтверждения через CAPTCHA
  • Указаны все обязательные поля: proxyType, proxyAddress, proxyPort
  • При авторизации корректно переданы proxyLogin и proxyPassword
  • Прокси расположен в регионе, ожидаемом целевым сайтом

Обработка ошибок API

Распространённые коды ошибок:

Код ошибки Описание Решение
ERROR_WRONG_USER_KEY Неверный API-ключ Проверьте clientKey в личном кабинете
ERROR_ZERO_BALANCE Недостаточно средств Пополните баланс аккаунта
ERROR_BAD_PARAMETERS Некорректные параметры задачи Проверьте формат gt, challenge, websiteURL
ERROR_PROXY_CONNECT_REFUSED Не удалось подключиться к прокси Проверьте данные прокси и его доступность
ERROR_CAPTCHA_UNSOLVABLE Капча не может быть решена Убедитесь, что challenge актуален и страница доступна
challenge expired Параметр challenge устарел Получите новый challenge перед отправкой задачи

Типичные ошибки

Ошибка Причина Решение
Повторное использование challenge challenge одноразовый Получайте новый challenge перед каждым запросом
Неверный gt Используется ключ от другого сайта Извлеките актуальный gt из исходного кода целевой страницы
Прокси отклоняет соединение Неверные данные или блокировка Проверьте прокси вручную перед отправкой задачи
Решение не принимается сайтом Неправильный формат отправки токенов Перехватите оригинальный запрос и воспроизведите структуру
Ошибка ERROR_BAD_PARAMETERS Некорректный формат параметров Проверьте, что gt и challenge — строки, websiteURL — валидный URL

Дополнительные ресурсы

Контрольный список

  • Получен и проверен API-ключ из личного кабинета RuCaptcha
  • Извлечён статический параметр gt из исходного кода целевого сайта
  • Реализовано получение динамического challenge перед каждым запросом
  • При использовании кастомного домена указан geetestApiServerSubdomain
  • При использовании прокси проверены все поля: тип, адрес, порт, логин, пароль
  • Добавлена обработка ошибок по кодам errorId и errorCode
  • Протестирована отправка полученного решения на целевой сайт
  • Настроено логирование запросов и ответов для отладки

Заключение

GeeTest V3 требует внимательной работы с динамическим параметром challenge, который необходимо получать заново перед каждым запросом к API. В отличие от версии 4, здесь нет упрощённого потока с captcha_id, но при правильной реализации интеграция остаётся стабильной.

Сервис RuCaptcha поддерживает два метода решения: GeeTestTaskProxyless для быстрого старта и GeeTestTask для случаев, когда требуется контроль над прокси. Оба метода возвращают одинаковый набор токенов: geetest_challenge, geetest_validate, geetest_seccode, которые необходимо передать на целевой сайт для верификации.

Интеграция с RuCaptcha позволяет делегировать сложную часть обхода капчи специализированному сервису, сосредоточив усилия на логике вашего приложения. При соблюдении параметров из этого руководства вы сможете стабильно решать GeeTest V3 на любых сайтах.