Hunt CAPTCHA
Есть два режима: без data задача возвращает X-HD, с data задача решает капчу по уже полученному от сайта meta.token. X-HD — уникальный отпечаток, привязанный к вашему IP, который можно использовать для последующих запросов к сайту.
Типовой сценарий:
- Создать задачу без
data. - Получить X-HD.
- Отправить запрос на сайт с этим X-HD.
- Получить от сайта
meta.token. - Создать новую задачу с
data = meta.token. - Получить решение.
- Передать решение на сайт.
Типы задач
- HuntTask — мы используем переданный вами прокси
Спецификация для типа задачи HuntTask
| Свойство | Тип | Обязателен | Описание |
|---|---|---|---|
| type | Строка | Да | Тип задачи: HuntTask |
| websiteURL | Строка | Да | Полный URL-адрес целевой веб-страницы, на которую загружается капча |
| apiGetLib | Строка | Да | Полная ссылка на файл api.js. |
| userAgent | Строка | Нет | User-Agent браузера, с которым открывается страница |
| data | Строка | Нет | Значение meta.token, которое сайт вернул после запроса с X-HD. Передается только для режима решения капчи |
| proxyType | Строка | Да | Тип прокси: http socks4 socks5 |
| proxyAddress | Строка | Да | IP-адрес прокси-сервера или имя хоста |
| proxyPort | Число | Да | Порт прокси-сервера |
| proxyLogin | Строка | Нет | Логин для аутентификации на прокси-сервере |
| proxyPassword | Строка | Нет | Пароль для аутентификации на прокси-сервере |
Примеры запросов
Метод: createTask
Эндпоинт API: https://api.2captcha.com/createTask
Пример запроса HuntTask с data
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "HuntTask",
"websiteURL": "https://example.com/page-with-hunt",
"apiGetLib": "https://example.com/hd-api/external/apps/app-id/api.js",
"data": "kufyHK/s/j...wIW",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080,
"proxyLogin": "login",
"proxyPassword": "password"
}
}
Пример ответа
Метод: getTaskResult
Эндпоинт API: https://api.2captcha.com/getTaskResult
json
{
"errorId": 0,
"status": "ready",
"solution": {
"token": "6IyDCCpDd.../z/kLNSpjewI="
},
"cost": "0.003",
"ip": "1.2.3.4",
"createTime": 1692863536,
"endTime": 1692863556,
"solveCount": 1
}
Как правильно работать с cookies
Сайт использует cookies, чтобы отслеживать сессию. Если не передавать их вместе с запросами, сервер просто отклонит обращение или попросит пройти проверку заново.
Пример строки с cookies, которую отдаёт сайт:
platform_type=desktop; typeBetNames=full; _glhf=1234567890; coefview=0; visit=1-123abc012345d1be726746568edc62d9; fast_coupon=true; v3fr=1; lng=en; flaglng=en; SESSION=12a3aea8cdcfdbb9e7df8ee99b526a84; auid=ab0dW2mqlz1Tjo2AAwplAg==; ggru=195; che_g=12abcede-691f-c7b2-d1e8-8488bc557d98
Основные шаги работы с cookies:
- Сначала откройте нужную страницу или отправь обычный запрос методом
GET. Сервер создаст сессию и пришлёт начальныеcookies. - Ищите
cookiesв заголовкеSet Cookieответа сервера. Там обычно лежит идентификатор сессии, параметры безопасности и данные для защиты от ботов. - Обязательно сохраните полученные значения. Они понадобятся для всех следующих обращений.
- При отправке запросов к API добавляйте сохранённые
cookiesв заголовокCookie. Так сервер поймёт, что запросы идут из одной сессии. - Выполняйте все запросы с одного IP адреса или прокси и с одинаковым заголовком
User Agent. Если менять эти данные, система безопасности заподозрит неладное и потребует повторную проверку. - Часть
cookiesсоздаёт сам сайт через JavaScript. При автоматизации проще всего брать готовыеcookiesиз работающего браузера или генерировать их по тому же принципу.