Перенесите интеграцию reCAPTCHA с 2Captcha на solvethree
Это не просто смена конечной точки. Замените обёртку clientKey/task плоским запросом с аутентификацией по Bearer-ключу, настройте целевой сайт в solvethree и предоставьте прокси. Храните существующие ID задач 2Captcha отдельно от новых задач solvethree.
На этой странице
Проверьте переносимую задачу
Этот переход касается reCAPTCHA v3 Enterprise через 2Captcha API v2. Устаревший API in.php/res.php здесь не рассматривается. Кроме того, версия API 2Captcha — не версия CAPTCHA: solvethree не поддерживает reCAPTCHA v2.
Исходный запрос использует обёртку, описанную в документации 2Captcha createTask: учётные данные находятся вне специфичного для провайдера объекта задачи.
{
"clientKey": "TWO_CAPTCHA_API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://accounts.example.com/login",
"websiteKey": "PUBLIC_SITE_KEY",
"minScore": 0.7,
"pageAction": "login",
"isEnterprise": true
}
}Не переносите этот объект в новый API без изменений. В частности, тип задачи без прокси и minScore не используются в приведённом ниже запросе solvethree.
Настройте сайт, затем замените запрос
Сначала настройте целевой сайт в консоли solvethree. Чтобы выполнять запросы на решение для этого имени хоста, в рабочем пространстве должен быть активный профиль сайта. Передача имени хоста и действия не создаёт профиль.
Создавайте новые задачи через POST /v1/tasks по адресу https://api.solvethree.com, используя Authorization: Bearer с API-ключом рабочего пространства. Храните этот ключ на сервере. Контракт создания задач предусматривает плоское тело JSON, а не вложенный объект task.
| Входные данные 2Captcha API v2 | Замена в solvethree |
|---|---|
| clientKey | API-ключ рабочего пространства в заголовке Authorization, а не в теле JSON. |
| Обёртка task | Удалите её; передавайте поля задачи на верхнем уровне. |
| type: RecaptchaV3TaskProxyless | Не передавайте type. Укажите ровно одно из полей: proxy или proxyCandidates. |
| websiteURL | Используйте site только с именем хоста: accounts.example.com. Не передавайте url. |
| websiteKey | Настройте профиль целевого сайта в консоли вместо копирования этого поля в задачу. |
| pageAction | Используйте action со значением действия целевого сайта, например login. |
| isEnterprise | Не передавайте это поле; по умолчанию recaptchaType имеет значение enterprise-v3. |
| minScore | Не передавайте это поле; не копируйте его в запрос solvethree. |
{
"site": "accounts.example.com",
"action": "login",
"proxy": "http://user:[email protected]:8080",
"requestId": "example_login_001"
}Замените имя хоста, действие и прокси из примера значениями для вашего целевого сайта. Выберите requestId до отправки запроса и сохраните его для восстановления после тайм-аута; для каждой новой логической задачи используйте новое значение.
В примере используется один прокси. В качестве альтернативы proxyCandidates принимает не более двенадцати различных URL HTTP- или HTTPS-прокси без путей, строк запроса и фрагментов. Передавайте только одно из этих полей, никогда оба. Кандидаты позволяют сервису пробовать альтернативные выходные подключения, но не гарантируют наличие рабочего прокси.
Замените опрос и обработку тайм-аутов
Для уже выполняющихся задач 2Captcha продолжайте использовать процесс getTaskResult с учётными данными, идентификаторами задач и документированной политикой опроса 2Captcha. Идентификатор задачи другого сервиса не является идентификатором задачи solvethree.
- 1.
Обработайте ответ на создание
Прежде чем читать данные успешного ответа, проверьте, не вернулся ли HTTP-ответ с ошибкой. По умолчанию создание reCAPTCHA ожидает до 15 секунд, но может вернуть задачу в непромежуточном? состоянии. Если задача уже имеет статус ready, используйте решение без запуска цикла опроса.
- 2.
Опрашивайте только незавершённые задачи
Получайте задачу solvethree через GET /v1/tasks/:id. Замените прежнюю проверку processing на pending и solving; оба статуса означают, что задача ещё не завершена. Только ready содержит пригодное для использования решение.
- 3.
Задайте ожидание в URL
По умолчанию опрос через GET не ожидает результата. Для длинного опроса задайте параметр строки запроса URL waitMs со значением не более 15000, а не поле JSON. В тайм-ауте HTTP-клиента учитывайте запрошенное время ожидания и сетевые задержки.
- 4.
Остановитесь при failed
Прочитайте errorCode и error, затем прекратите опрос этой задачи. За неудачные решения средства возвращаются. Ошибка вроде site-unreachable требует проверки; не считайте любую ошибку проблемой с балансом и не отправляйте повторно неизменённые некорректные входные данные.
Тайм-аут соединения не доказывает, что задача не была создана. Если вы получили идентификатор задачи, запросите эту задачу. Если не получили, повторите тот же запрос с тем же requestId, чтобы восстановить существующую задачу, а не создавать новое решение. Изменение входных данных задачи при повторном использовании того же requestId вызывает конфликт.
В адаптере обрабатывайте HTTP-ошибки отдельно от окончательных ошибок задач. Контракт опроса и обработка ошибок описывают эти два сценария; не используйте повторно парсер ответов с ошибками 2Captcha.
Обновите извлечение и отправку токена
Замените поиск токена в старом адаптере на solution.token из задачи solvethree со статусом ready. Передавайте этот токен туда, где целевой сайт ожидает значение reCAPTCHA, а не идентификатор задачи или весь объект solution.
При отправке токена используйте возвращённые данные браузера userAgent и secChUa вместе с прокси, через который получено решение. Если вы передали proxyCandidates, используйте успешный прокси, а не выбирайте другой из списка для отправки.
Статус ready означает, что решение сгенерировано, а не что сайт принял запрос вашего приложения. Если целевой сайт его отклоняет, проверьте отправляемый токен, действие, целевой URL, прокси и данные браузера, прежде чем оплачивать ещё одно решение.
Источники и справочник API
Запустите первую задачу.
Начните с $5 на балансе рабочего пространства.