GeeTest V3
GeeTest V3 — интерактивная CAPTCHA, которая обычно требует от пользователя перетащить пазл на нужное место или выбрать изображения в определённой последовательности. Наш сервис автоматизирует этот процесс, анализируя задание и возвращая корректные значения ответа, необходимые для прохождения проверки.
Обзор
GeeTest V3 обычно выглядит как:
- Slide Puzzle — перетаскивание фрагмента для совмещения с фоном
- Click Sequence — выбор изображений в определённом порядке
- Gap Fill — перемещение элементов на правильные позиции
- Возвращает три значения (
challenge,validate,seccode), которые нужно отправить вместе
Формат запроса
/in.phpkeystringобязателенВаш API-ключ (32 символа)
methodstringобязателенЗначение: geetest
gtstringобязателенПубличный ключ сайта (обычно статичный)
challengestringобязателенДинамический токен, загружаемый вместе с капчей (должен быть свежим)
pageurlstringобязателенПолный URL-адрес текущей страницы
userAgentstringопциональноUser-Agent, передаваемая в браузер решателя
jsoninteger (0/1)по умолчанию: 0опционально0 — ответ текстом, 1 — ответ JSON
ВАЖНО
Параметр challenge становится недействительным после загрузки или по истечении таймаута. Всегда получайте свежий challenge непосредственно перед отправкой на решение.
Как решать капчу
Шаг 1. Извлеките параметры GeeTest
Найдите динамические параметры GeeTest на целевом сайте — обычно они передаются в функцию initGeetest:
- gt — публичный ключ сайта (обычно статичный)
- challenge — динамический токен, загружаемый вместе с капчей (должен быть свежим)
- pageurl — полный URL текущей страницы
Шаг 2. Отправьте задачу нам
curl -G "https://captcha-api.iwhat.pw/in.php" \
-d key=YOUR_API_KEY \
-d method=geetest \
-d gt=7ec9a234f0b8451dc36f8a209e4d17bc \
-d challenge=9f4b1cd08a763e2f5061bc3d9a7e40f18c2 \
-d pageurl=https://example.com/page \
-d json=1import requests
params = {
'key': 'YOUR_API_KEY',
'method': 'geetest',
'gt': '7ec9a234f0b8451dc36f8a209e4d17bc',
'challenge': '9f4b1cd08a763e2f5061bc3d9a7e40f18c2',
'pageurl': 'https://example.com/page',
'json': '1'
}
response = requests.get('https://captcha-api.iwhat.pw/in.php', params=params)
result = response.json()
task_id = result['request']
print(f"ID задачи: {task_id}")const params = new URLSearchParams({
key: 'YOUR_API_KEY',
method: 'geetest',
gt: '7ec9a234f0b8451dc36f8a209e4d17bc',
challenge: '9f4b1cd08a763e2f5061bc3d9a7e40f18c2',
pageurl: 'https://example.com/page',
json: '1',
});
const res = await fetch(`https://captcha-api.iwhat.pw/in.php?${params}`);
const { request: taskId } = await res.json();
console.log(`ID задачи: ${taskId}`);Шаг 3. Получение решения
import time
import json
time.sleep(15)
params = {
'key': 'YOUR_API_KEY',
'action': 'get',
'id': task_id,
'json': '1'
}
response = requests.get('https://captcha-api.iwhat.pw/res.php', params=params)
result = response.json()
if result['status'] == 1:
solution = json.loads(result['request'])
print(f"Challenge: {solution['challenge']}")
print(f"Validate: {solution['validate']}")
print(f"Seccode: {solution['seccode']}")Шаг 4. Используем данные
data = {
'username': 'user@example.com',
'password': 'password123',
'geetest_challenge': solution['challenge'],
'geetest_validate': solution['validate'],
'geetest_seccode': solution['seccode']
}
response = requests.post('https://example.com/api/login', data=data)
print(response.text)Формат ответа
JSON-ответ (при json=1):
{
"status": 1,
"request": "{\"challenge\": \"1a2b3456cd67890e12345fab678901c2de\", \"validate\": \"09fe8d7c6ba54f32e1dcb0a9fedc8765\", \"seccode\": \"12fe3d4c56789ba01f2e345d6789c012|jordan\"}"
}Ответ содержит три ключевых значения: challenge (токен для отправки), validate (токен валидации), seccode (код безопасности, формат hash|keyword).
Распространённые ошибки
| Код | Описание |
|---|---|
ERROR_WRONG_USER_KEY | Неверный формат API-ключа |
ERROR_KEY_DOES_NOT_EXIST | Такого API-ключа не существует |
ERROR_ZERO_BALANCE | Недостаточно средств на балансе |
ERROR_PAGEURL | Отсутствует параметр pageurl |
ERROR_WRONG_CAPTCHA_ID | Неверный gt или challenge |
CAPCHA_NOT_READY | Решение ещё не готово, подождите 5 сек |
Советы и рекомендации
- Всегда используйте свежий challenge — использование закэшированных или повторных
challengeприводит к ошибкам - Срок действия
challengeистекает примерно через 10 минут, получайте новый непосредственно перед решением - Отправляйте три значения сразу после получения — они жёстко привязаны к исходному
challenge - Указывайте точный
pageurlс query-параметрами (если они есть), чтобы соответствовать контексту origin