Эта статья была полезной?
Как отличить GeeTest v3 от GeeTest v4
Технический специалист
Для обычного пользователя GeeTest v3 и v4 выглядят абсолютно одинаково: тот же слайдер-пазл, та же невидимая проверка поведения. Но для разработчика это две совершенно разные системы. Если вы попытаетесь скормить параметры от v3 виджету v4 (или наоборот), капча просто не сработает.
Самое обидное, что визуально, просто глядя на страницу, версию часто не определить. Придется заглянуть в код. Давайте разберемся, как за пару секунд понять, с какой версией вы имеете дело, и что именно от нее требуется.
Самый быстрый способ отличить
Откройте инструменты разработчика в браузере и посмотрите исходный код страницы или вкладку Сеть.
- Это v3, если рядом со значением gt вы видите еще и challenge.
- Это v4, если вы видите только captcha_id, а никакого challenge статически на странице нет.
Дополнительная подсказка: скрипт для v4 загружается с адреса gcaptcha4.geetest.com/load, и captcha_id часто передается прямо там, в URL, как query-параметр.
GeeTest v3: ключевые особенности и параметры
Версия v3 требует два значения:
- gt — статический ключ сайта, который почти никогда не меняется.
- challenge — динамическое значение, которое годится только для одного использования.
Главная ловушка v3: параметр challenge одноразовый. В тот момент, когда капча загрузилась на странице, этот конкретный challenge уже потрачен. Если вы попытаетесь использовать его повторно, API вернет ошибку истекшего токена вместо решения.
Это значит, что просто скопировать challenge один раз и закэшировать его не получится. Вам нужно перехватить сетевой запрос, который сама страница делает за свежим challenge, и повторять этот шаг перед каждой новой отправкой задачи.
Полный запрос к API для v3 выглядит так:
bash
curl -X POST https://api.2captcha.com/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "GeeTestTaskProxyless",
"websiteURL": "https://2captcha.com/demo/geetest",
"gt": "81388ea1fc187e0c335c0a8907ff2625",
"challenge": "2e2f0f65240058b683cb6ea21c303eea6n"
}
}'
Через Python SDK:
python
from twocaptcha import TwoCaptcha
solver = TwoCaptcha('YOUR_API_KEY')
result = solver.geetest(
gt='81388ea1fc187e0c335c0a8907ff2625',
challenge='2e2f0f65240058b683cb6ea21c303eea6n',
url='https://2captcha.com/demo/geetest'
)
print(result)
В ответ вы получите набор из трех токенов: challenge, validate и seccode. Их нужно вставить в форму так же, как это сделал бы сам GeeTest после ручного решения. Обычно это скрытые поля с именами geetest_challenge, geetest_validate и geetest_seccode, хотя некоторые сайты вместо этого ждут вызова JavaScript-колбэка.
GeeTest v4: упрощенный формат и параметры
В версии v4 разработчики GeeTest избавились от необходимости использовать динамический challenge.
Всё, что теперь нужно, — это captcha_id. Это статический идентификатор, привязанный к сайту. Он не протухает и не меняется так, как challenge у v3. Это делает работу с v4 заметно проще: вам больше не нужно охотиться за сетевыми запросами. Достаточно один раз найти этот ID и спокойно использовать его снова и снова.
Запрос к API для v4:
bash
curl -X POST https://api.2captcha.com/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "GeeTestTaskProxyless",
"websiteURL": "https://2captcha.com/demo/geetest-v4",
"version": 4,
"initParameters": {
"captcha_id": "e392e1d7fd421dc63325744d5a2b9c73"
}
}
}'
Через Python SDK:
python
from twocaptcha import TwoCaptcha
solver = TwoCaptcha('YOUR_API_KEY')
result = solver.geetest_v4(
captcha_id='e392e1d7fd421dc63325744d5a2b9c73',
url='https://2captcha.com/demo/geetest-v4'
)
print(result)
Ответ выглядит совсем не так, как у v3. Вместо трех коротких токенов, v4 возвращает пять полей: captcha_id, lot_number, pass_token, gen_time и captcha_output. Все пять значений нужно доставить на целевую страницу — снова либо как скрытые поля формы, либо через колбэк, который ожидает JavaScript сайта.
Краткое сравнение
| Характеристика | GeeTest v3 | GeeTest v4 |
|---|---|---|
| Обязательные параметры | gt, challenge | captcha_id |
| Протухает ли значение? | Да, challenge одноразовый | Нет, captcha_id статический |
| Нужен ли доп. шаг? | Да, нужно перехватывать свежий challenge из запросов страницы | Нет, ID берется из кода один раз |
| Тип задачи в API | GeeTestTaskProxyless / GeeTestTask | GeeTestTaskProxyless / GeeTestTask (с параметром version: 4) |
| Возвращаемые токены | challenge, validate, seccode | captcha_id, lot_number, pass_token, gen_time, captcha_output |
| Типичные имена полей в форме | geetest_challenge, geetest_validate, geetest_seccode | lot_number, pass_token, gen_time, captcha_output |
Важный нюанс с именами полей
Небольшой, но важный момент. Если вы читали старые гайды или сообщения на форумах, вы могли видеть, что токены ответа v3 назывались с префиксом geetest_ (например, geetest_challenge).
Это особенность старых эндпоинтов in.php и res.php. Современный API createTask и getTaskResult, а также актуальные SDK возвращают те же самые данные, но без префикса: просто challenge, validate и seccode.
Данные одни и те же, просто названия ключей в JSON отличаются в зависимости от того, какой частью API вы пользуетесь. Имейте это в виду, чтобы не тратить время на поиск поля, которого на самом деле нет в ответе.
Заключение
Разница между GeeTest v3 и v4 сводится к одному ключевому моменту: необходимость каждый раз добывать динамический challenge в третьей версии против использования статического captcha_id в четвертой. Пока внешне виджеты выглядят для пользователя идентично, под капотом они требуют принципиально разного подхода к интеграции.
Как только вы научитесь за пару секунд определять версию через исходный код страницы или сетевые запросы, процесс настройки перестанет быть методом проб и ошибок. Вы будете заранее знать, нужно ли настраивать перехват трафика, какие именно параметры готовить для отправки в API и в каком формате ждать ответные токены для внедрения в форму. Это превращает обход капчи из источника постоянных ошибок и таймаутов в четкий, надежный и полностью предсказуемый этап вашей автоматизации.
Полезные ссылки
- Документация API 2Captcha по GeeTest: https://2captcha.com/api-docs/geetest
- Демо-страница GeeTest v3: https://2captcha.com/demo/geetest
- Демо-страница GeeTest v4: https://2captcha.com/demo/geetest-v4
- Python SDK 2Captcha на GitHub: https://github.com/2captcha/2captcha-python