Запрос токена reCAPTCHA Enterprise с cURL
Создайте задачу с именем хоста сайта, действием и прокси. Если возвращается pending или solving, опрашивайте задачу по полученному ID. Читайте токен из solution.token только при статусе ready.
На этой странице
Подготовьте сайт, ключ и прокси
- Убедитесь, что cURL и jq доступны в вашей оболочке.
- Задайте для
SOLVETHREE_API_KEYAPI-ключ рабочего пространства. Выполняйте эти команды на сервере; не размещайте ключ в браузерном коде. - Задайте для
SOLVETHREE_PROXYURL прокси, который планируете использовать для решения и отправки токена. - Настройте в консоли активный профиль сайта reCAPTCHA для вашего рабочего пространства. Замените
accounts.example.comиloginв примере на свои имя хоста и действие.
Передача имени хоста и действия не создаёт профиль сайта. Профиль должен быть активен до отправки запроса на решение.
Создайте задачу с явно заданным ожиданием
# Set SOLVETHREE_API_KEY and SOLVETHREE_PROXY in your environment first.
# Replace the hostname and action with your active site profile.
jq -n \
--arg proxy "$SOLVETHREE_PROXY" \
--arg requestId "login-$(date +%s)-$$" \
'{site:"accounts.example.com", action:"login", proxy:$proxy, requestId:$requestId}' \
| curl --fail-with-body --max-time 30 \
'https://api.solvethree.com/v1/tasks?waitMs=15000' \
-H "Authorization: Bearer $SOLVETHREE_API_KEY" \
-H 'Content-Type: application/json' \
--data-binary @-Тело JSON содержит site, action и один proxy. Требуется ровно одно из полей proxy или proxyCandidates. Не добавляйте type или url; без recaptchaType выбирается enterprise-v3.
Параметр запроса waitMs=15000 задаёт ожидание до 15 секунд для запроса создания. Его нужно указывать в URL, а не в теле JSON. Тайм-аут cURL составляет 30 секунд, оставляя запас на сетевые задержки сверх этого ожидания на сервере. На момент получения ответа задача всё ещё может быть в промежуточном состоянии.
Прочитайте ответ и опрашивайте незавершённые задачи
Проверьте наличие HTTP-ошибки, прежде чем интерпретировать тело как ответ задачи. Обе команды используют --fail-with-body; обрабатывайте неудачный HTTP-запрос отдельно от задачи со статусом failed.
Ответ с готовым решением имеет следующую структуру. Значения ниже — заглушки, а не токен, который можно отправить.
{
"id": "example-task",
"status": "ready",
"solution": {
"token": "EXAMPLE_TOKEN",
"userAgent": "EXAMPLE_USER_AGENT",
"secChUa": "EXAMPLE_CLIENT_HINTS"
}
}| Статус | Следующее действие |
|---|---|
| pending или solving | Сохраните полученный id и запрашивайте ту же задачу. Пригодного для использования решения ещё нет; не создавайте задачу на замену. |
| готово | Прекратите опрос и прочитайте solution.token, solution.userAgent и solution.secChUa. |
| failed | Прекратите опрос и изучите errorCode и error. Средства за неудачные решения возвращаются. Устраните причину, прежде чем запускать новую задачу. |
Если ответ содержит промежуточное состояние, задайте в окружении TASK_ID равным полученному id, затем запросите задачу:
curl --fail-with-body --max-time 30 \
"https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
-H "Authorization: Bearer $SOLVETHREE_API_KEY"Этот GET ожидает результат до 15 секунд при HTTP-тайм-ауте 30 секунд. Без waitMs GET возвращает ответ без ожидания. Повторяйте GET только при статусе pending или solving и задайте общий срок ожидания в вызывающем коде, чтобы цикл опроса не мог выполняться бесконечно.
Если задача завершилась неудачно, используйте сведения об ошибке, а не предполагайте проблему с балансом. Например, site-unreachable требует проверки доступности целевого сайта, а не слепой повторной отправки неизменённых входных данных.
Отправьте токен
Используйте solution.token в запросе к целевому приложению. Поле id задачи нужно только для получения задачи; это не токен CAPTCHA. Куда передавать токен, зависит от формы или API целевого приложения, поэтому универсальной команды для его отправки нет.
При отправке токена используйте возвращённые solution.userAgent и solution.secChUa, а также прокси, через который задача была успешно решена. В примере выше с одним прокси используйте тот же SOLVETHREE_PROXY. Не подставляйте посторонние идентификационные данные браузера или URL целевого ресурса.
Статус ready означает, что solvethree сгенерировал решение. Чтобы определить, приняло ли целевое приложение ваш запрос, отдельно проверьте его ответ.
Другие вопросы
Это то же самое, что API siteverify от Google?
Нет. API siteverify от Google проверяет уже существующий токен и требует секретный ключ проверки владельца сайта. API solvethree генерирует решение с помощью API-ключа вашего рабочего пространства. Не передавайте секретный ключ проверки Google в запросе на создание задачи.
Источники и справочник API
Запустите первую задачу.
Начните с $5 на балансе рабочего пространства.