Если в исходном коде страницы встречается gcaptcha4.geetest.com или скрипт gt4.js — перед вами GeeTest v4, переработанная версия с новым протоколом валидации и адаптивной оценкой рисков. Сразу о статусе: поддержка v4 в CaptchaAI пока в разработке (скоро), а GeeTest v3 сервис решает уже сегодня — с высокой долей успешных решений на поддерживаемых типах. Ниже разберём, чем v4 отличается от v3, как определить версию прямо в коде страницы и как выглядит запланированный процесс интеграции v4, чтобы подготовить его заранее.
Чем 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.
Сопоставление иконок
Пользователь сопоставляет иконки, показанные последовательностью. Автоматизировать вручную труднее всего.
Когда поддержка v4 выйдет, API возьмёт на себя логику конкретного типа задания, и различать их вручную не понадобится. Сегодня же CaptchaAI решает GeeTest v3, а v4 остаётся в статусе «скоро».
Извлечение параметров 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://https://staging.example.com/qa-login")
print(f"Captcha ID: {params['captcha_id']}")
print(f"Is v4: {params['is_v4']}")
Решение GeeTest v4: запланированный процесс (скоро)
Поддержка GeeTest v4 в CaptchaAI находится в разработке и пока недоступна — её можно описывать только как «скоро». До релиза используйте GeeTest v3, который сервис решает уже сегодня. Код ниже показывает запланированный сценарий v4, чтобы подготовить интеграцию заранее: задача отправляется на in.php, затем результат опрашивается через res.php до готовности токенов. Текущий статус типов проверяйте на странице поддерживаемых CAPTCHA.
# solve_geetest_v4.py
import requests
import time
import os
def solve_geetest_v4(captcha_id, pageurl):
"""Submit GeeTest v4 to CaptchaAI and get solution."""
api_key = os.environ["CAPTCHAAI_API_KEY"]
# Submit task
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": api_key,
"method": "geetest",
"gt": captcha_id, # captcha_id maps to the gt parameter
"pageurl": pageurl,
"version": "4", # Specify v4 explicitly
"json": 1,
}, timeout=30)
result = resp.json()
if result.get("status") != 1:
raise RuntimeError(f"Submit failed: {result.get('request')}")
task_id = result["request"]
# Poll for result
time.sleep(10)
for _ in range(30):
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key,
"action": "get",
"id": task_id,
"json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
return data["request"] # Contains validation tokens
if data["request"] != "CAPCHA_NOT_READY":
raise RuntimeError(data["request"])
time.sleep(5)
raise TimeoutError("GeeTest v4 solve timeout")
# Usage
solution = solve_geetest_v4(
captcha_id="abc123def456",
pageurl="https://https://staging.example.com/qa-login",
)
print(f"Solution: {solution}")
Параметр version: "4" здесь обязателен: без него запрос уйдёт по логике v3 и вернёт ошибку. Первый опрос делаем через 10 секунд, дальше — с шагом в 5 секунд, пока res.php не отдаст status == 1.
Внедрение решения GeeTest v4
В отличие от v3, ответ v4 состоит из нескольких токенов — lot_number, pass_token, gen_time и captcha_output. Их нужно разобрать как JSON и подставить в скрытые поля формы, после чего вызвать колбэк валидации. Скрипт ниже создаёт недостающие поля, если их нет на странице.
# inject_geetest_v4.py
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
def inject_geetest_v4_solution(driver, solution):
"""Inject GeeTest v4 solution tokens into the page."""
# Parse solution — v4 returns different tokens than v3
if isinstance(solution, str):
try:
solution = json.loads(solution)
except json.JSONDecodeError:
pass
# GeeTest v4 validation uses lot_number, pass_token, gen_time, captcha_output
driver.execute_script("""
var solution = arguments[0];
// Set hidden form fields
var fields = {
'lot_number': solution.lot_number,
'pass_token': solution.pass_token,
'gen_time': solution.gen_time,
'captcha_output': solution.captcha_output,
};
for (var name in fields) {
var input = document.querySelector('input[name="' + name + '"]');
if (!input) {
input = document.createElement('input');
input.type = 'hidden';
input.name = name;
document.forms[0].appendChild(input);
}
input.value = fields[name];
}
// Trigger validation callback if available
if (window.captchaObj && typeof window.captchaObj.appendTo === 'function') {
window.captchaObj.appendTo('#captcha-container');
}
""", solution)
Устранение типичных проблем
| Проблема | Причина | Как исправить |
|---|---|---|
ERROR_WRONG_CAPTCHA_ID |
Передано значение gt от v3 вместо captcha_id v4 |
Найдите на странице скрипт gcaptcha4 и подтвердите версию 4 |
| Решение отклонено | Нет параметра version=4 |
Всегда указывайте version: "4" для версии 4 |
captcha_id не найден |
Значение отрисовывается через JavaScript | Извлекайте его из готового DOM через Selenium |
| Ошибка формата токена | Строка разбирается вместо JSON | Разберите ответ как JSON и достаньте отдельные токены |
Часто задаваемые вопросы
Доступно ли решение GeeTest v4 в CaptchaAI?
Пока нет. Поддержка GeeTest v4 в разработке (скоро) и как доступная не заявляется. GeeTest v3 сервис решает уже сегодня через API.
Как определить версию GeeTest прямо на странице?
Ищите в исходном коде gcaptcha4.geetest.com или gt4.js — это признаки v4. Если видите api.geetest.com и параметр challenge, перед вами v3.
Нужно ли переписывать код при переходе с v3 на v4?
Да. Меняются инициализация (captcha_id вместо gt + challenge) и разбор ответа (токены lot_number и pass_token). Логику извлечения параметров и обработки результата придётся адаптировать.
Какой тариф CaptchaAI подойдёт для объёмов GeeTest v3?
Оплата идёт по числу одновременных потоков, а не по количеству решений. Для старта и небольших нагрузок хватает тарифа BASIC ($15/мес, 5 потоков) с неограниченным числом решений в рамках потоков; при росте очереди выбирайте план с большим числом потоков.
Связанные руководства
Решайте GeeTest v3 уже сегодня — начните с CaptchaAI. Поддержка v4 скоро.