Explainers

GeeTest v4: что изменилось и как решать капчу

Если в исходном коде страницы встречается gcaptcha4.geetest.com или скрипт gt4.js — перед вами GeeTest v4, переработанная версия с новым протоколом валидации и адаптивной оценкой рисков. Сразу о статусе: CaptchaAI решает GeeTest v3 с высокой долей успешных решений. GeeTest v4 он не решает. Ниже разберём, чем v4 отличается от v3, как определить версию прямо в коде страницы и что из этого решает CaptchaAI.


Чем GeeTest v4 отличается от v3

Главное отличие — способ инициализации. В v3 сервер отдавал пару gt + challenge, и без неё вызов API был невозможен. В v4 клиенту достаётся только captcha_id, а сам вызов формируется на стороне браузера. Меняется и схема валидации: вместо серверного challenge результат подтверждается токенами lot_number и pass_token.

Параметр GeeTest v3 GeeTest v4
Инициализация gt + challenge с сервера Только captcha_id
Параметр вызова Приходит из вызова API Формируется на стороне клиента
Типы заданий Слайд, клик Слайд, клик, выбор иконок, пространственная логика
Валидация Сервер возвращает challenge Токены lot_number + pass_token
Конечная точка API api.geetest.com gcaptcha4.geetest.com
Сложность Фиксированная Адаптивная оценка рисков

Для команды, которая парсит портал или гоняет staging-тесты, это означает одно: код, написанный под v3, на странице с v4 работать не будет — ни извлечение параметров, ни разбор ответа.


Типы заданий в GeeTest v4

Адаптивная логика v4 показывает пользователю разные задания в зависимости от оценки риска. Их четыре.

Слайд-пазл

Классическая задача «перетащи кусочек»: пользователь двигает фрагмент до совпадения. Знаком ещё по v3.

Выбор кликом

Пользователь кликает по конкретным объектам (например, «выберите все лица»). Основано на распознавании иконок.

Пространственная логика

Новинка v4 — нужно расставить фигуры в правильном пространственном порядке. Заметно сложнее заданий v3.

Сопоставление иконок

Пользователь сопоставляет иконки, показанные последовательностью. Автоматизировать вручную труднее всего.

Какое бы из этих заданий ни показала страница, это GeeTest v4, и решить такую страницу CaptchaAI не может. CaptchaAI решает GeeTest v3.


Извлечение параметров GeeTest v4

GeeTest v4 отдаёт captcha_id через JavaScript, поэтому статического HTTP-запроса недостаточно — страницу нужно отрендерить. Selenium открывает её в браузере, а регулярное выражение вытягивает идентификатор из готового DOM. Заодно проверяем наличие маркеров gcaptcha4 / gt4.js, чтобы точно убедиться в версии.

# extract_geetest_v4.py
import re
from selenium import webdriver


def extract_geetest_v4_params(url):
    """Extract GeeTest v4 captcha_id from a page."""
    driver = webdriver.Chrome()
    driver.get(url)

    page_source = driver.page_source

    # GeeTest v4 uses captcha_id instead of gt
    match = re.search(r'captcha_id["\']?\s*[:=]\s*["\']([a-f0-9]+)', page_source)
    captcha_id = match.group(1) if match else None

    # Check for v4-specific script
    is_v4 = "gcaptcha4" in page_source or "gt4.js" in page_source

    driver.quit()

    return {
        "captcha_id": captcha_id,
        "is_v4": is_v4,
        "pageurl": url,
    }


# Usage
params = extract_geetest_v4_params("https://staging.example.com/qa-login")
print(f"Captcha ID: {params['captcha_id']}")
print(f"Is v4: {params['is_v4']}")

Что решает CaptchaAI

CaptchaAI решает GeeTest v3. GeeTest v4 он не решает. Метод geetest в API CaptchaAI принимает значения v3 (gt, свежий challenge и pageurl) и возвращает challenge, validate и seccode. Параметров для v4 у него нет, поэтому не отправляйте captcha_id от v4 в поле gt. Сначала выполните проверку выше: если страница загружает gcaptcha4.geetest.com или gt4.js, на ней работает v4, и CaptchaAI её не решит. Если страница всё ещё на v3, полный процесс разобран в руководстве Как решить GeeTest v3 с помощью API.


Чем отличается валидация v4

На странице с v3 успешное прохождение даёт три значения — geetest_challenge, geetest_validate и geetest_seccode, — которые бэкенд сайта проверяет в GeeTest. На странице с v4 captchaObj.getValidate() возвращает вместо них четыре значения: lot_number, captcha_output, pass_token и gen_time. Бэкенд сайта отправляет их на конечную точку v4 /validate на gcaptcha4.geetest.com вместе со своим captcha_id и sign_token, подписанным своим закрытым ключом (документация GeeTest v4: web API и server API). Коду, который читает или заполняет три поля v3, на странице с v4 работать не с чем.


Устранение типичных проблем

Проблема Причина Как исправить
Поиск gt / challenge ничего не находит на странице, которая раньше работала Сайт перешёл на GeeTest v4, где нет challenge, выдаваемого сервером Проверьте страницу на gcaptcha4.geetest.com или gt4.js; CaptchaAI решает только GeeTest v3
ERROR_WRONG_CAPTCHA_ID от CaptchaAI Неверный gt или challenge, например captcha_id от v4, переданный как gt Отправляйте gt страницы от v3 и свежий challenge в каждом запросе
captcha_id не найден Значение отрисовывается через JavaScript Извлекайте его из готового DOM через Selenium

Часто задаваемые вопросы

Доступно ли решение GeeTest v4 в CaptchaAI?

Нет. CaptchaAI решает GeeTest v3 через API с высокой долей успешных решений. GeeTest v4 он не решает, поэтому показателя успешности для v4 нет.

Как определить версию GeeTest прямо на странице?

Ищите в исходном коде gcaptcha4.geetest.com или gt4.js — это признаки v4. Если видите api.geetest.com и параметр challenge, перед вами v3.

Нужно ли переписывать код при переходе с v3 на v4?

Интеграцию под v3 нельзя просто направить на страницу с v4: там нет challenge, выдаваемого сервером (только captcha_id), а успешное прохождение возвращает четыре значения вместо трёх. Но CaptchaAI решает только GeeTest v3: страницы с v4 он не решает.

Какой тариф CaptchaAI подойдёт для объёмов GeeTest v3?

Оплата идёт по числу одновременных потоков, а не по количеству решений. Для старта и небольших нагрузок хватает тарифа BASIC ($15/мес, 5 потоков) с неограниченным числом решений в рамках потоков; при росте очереди выбирайте план с большим числом потоков.


Связанные руководства


Решайте GeeTest v3 — начните с CaptchaAI. GeeTest v4 CaptchaAI не решает.

Комментарии для этой статьи отключены.