GeeTestTask
Параметры, запрос и ответ для GeeTest v3 через ваш прокси: тип задачи GeeTestTask.
На этой странице
GeeTest v3: капча со слайдером или кликами, которую создаёт initGeetest({gt, challenge}). Задача решается через ваш прокси, поэтому ответ выдаётся для вашего IP-адреса.
| Цена | 0,90 $ за 1000 задач (0,0009 $ за задачу), только за решённые — цены |
| Прокси | обязателен — ваш |
| Очередь в getQueueStats | — |
| Также принимается как | — |
Параметры#
Поля объекта task в createTask:
ПараметрОписание
typestringобязательныйGeeTestTaskwebsiteURLstringобязательный- Полный адрес страницы с капчей: http(s), до 2048 символов, публичный сайт.
gtstringобязательныйgtGeeTest: публичный id сайта, передаётся вinitGeetestи виден в запросах кapi.geetest.com.challengestringобязательныйchallengeGeeTest: одноразовое значение, которое сайт выдаёт на каждую капчу. Берите свежее для каждой задачи.userAgentstring- User-Agent браузера, который отправит токен, до 512 символов. Возвращается в
solution.userAgent. cookiesstring- Cookies целевого сайта для решающего браузера:
name=value; name2=value2, до 8192 символов. Хранятся зашифрованными. proxyTypestringhttp(по умолчанию),https,socks4илиsocks5.proxyAddressstringобязательный- IP-адрес или имя хоста прокси. Частные и локальные адреса отклоняются.
proxyPortintegerобязательный- Порт прокси, 1–65535.
proxyLoginstring- Логин прокси, до 256 символов. Хранится зашифрованным.
proxyPasswordstring- Пароль прокси, до 256 символов. Хранится зашифрованным.
Запрос#
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "GeeTestTask",
"websiteURL": "https://example.com/login",
"gt": "81388ea1fc187e0c335c0a8907ff2625",
"challenge": "2e2f0f65240058b683cb6ea21c303eea",
"proxyType": "http",
"proxyAddress": "proxy.example.com",
"proxyPort": 8080,
"proxyLogin": "user",
"proxyPassword": "pass"
}
}Полный пример#
Создать задачу, опрашивать каждые 2 секунды, вывести решение:
import os
import time
import requests
API = "https://neurocaptcha.com"
KEY = os.environ["API_KEY"]
def call(method, payload):
data = requests.post(f"{API}/{method}", json={"clientKey": KEY, **payload}, timeout=30).json()
if data.get("errorId"):
raise RuntimeError(f'{data["errorCode"]}: {data.get("errorDescription", "")}')
return data
task = {
"type": "GeeTestTask",
"websiteURL": "https://example.com/login",
"gt": "81388ea1fc187e0c335c0a8907ff2625",
"challenge": "2e2f0f65240058b683cb6ea21c303eea",
"proxyType": "http",
"proxyAddress": "proxy.example.com",
"proxyPort": 8080,
"proxyLogin": "user",
"proxyPassword": "pass",
}
# 1. create the task: its price is held, not charged
task_id = call("createTask", {"task": task})["taskId"]
# 2. poll every 2 s; a failed task raises with its error code and costs nothing
deadline = time.time() + 300
while time.time() < deadline:
time.sleep(2)
result = call("getTaskResult", {"taskId": task_id})
if result["status"] == "ready":
print(result["solution"])
break
else:
raise TimeoutError("the task was not solved in time")Ответ#
getTaskResult после решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"challenge": "2e2f0f65240058b683cb6ea21c303eeaxy",
"validate": "d0b6dc3d84b1d3e9e94e5c2c2b8e1d3a",
"seccode": "d0b6dc3d84b1d3e9e94e5c2c2b8e1d3a|jordan",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"
},
"cost": "0.000900",
"ip": "198.51.100.7",
"createTime": 1793370000,
"endTime": 1793370007,
"solveCount": 1
}Советы#
gtиchallengeищите в коде страницы или в запросе кapi.geetest.com/get.php(DevTools → Network).challengeодноразовый: для каждой задачи запрашивайте у сайта новый.- Передайте
challenge,validateиseccodeиз решения так же, как страница отправляетgeetest_challenge,geetest_validateиgeetest_seccode. - Отправляйте токен через тот же прокси и с тем же
userAgent, что и в задаче. Подробнее — Прокси.