Отправьте токен reCAPTCHA с помощью Python HTTPX
При отправке POST-запроса целевому сайту используйте solution.token, прокси, через который удалось решить CAPTCHA, и возвращённые параметры браузера. Храните cookies приложения в одном клиенте HTTPX; действительный токен не отменяет требований приложения к сессии или CSRF.
На этой странице
Отправьте готовый токен через успешный прокси
Установите HTTPX с помощью pip install httpx. В примере также используется официальный Python SDK; если он не установлен, см. настройку Python SDK.
В пример включён вызов решения CAPTCHA, чтобы показать, откуда берётся результат. Если у вас уже есть результат SDK со статусом ready, используйте его как result вместе с исходным request. Не создавайте ещё одну задачу только для отправки её токена.
- Задайте для
SOLVETHREE_API_KEYAPI-ключ рабочего пространства, а дляSOLVETHREE_PROXY— URL прокси. Храните API-ключ на сервере. - Замените
accounts.example.com, действиеloginи URL отправки значениями вашего целевого сайта. Для имени хоста нужен активный профиль сайта в вашем рабочем пространстве; см. настройку профиля сайта. - Адаптируйте поля формы под фактический запрос приложения. Пример отправляет только поле CAPTCHA, а не полную форму входа.
# pip install httpx and the official solvethree SDK wheel.
import os
import httpx
from solvethree import Solvethree, successful_proxy
request = {"site": "accounts.example.com", "action": "login", "proxy": os.environ["SOLVETHREE_PROXY"]}
result = Solvethree(os.environ["SOLVETHREE_API_KEY"]).solve(request, timeout=180)
solution = result["solution"]
proxy = successful_proxy(request, result)
if proxy is None:
raise RuntimeError("No valid successful proxy")
with httpx.Client(proxy=proxy, timeout=30, follow_redirects=False, trust_env=False) as target:
# Use this client's cookie jar for any required application session first.
response = target.post("https://accounts.example.com/login",
data={"g-recaptcha-response": solution["token"]},
headers={"User-Agent": solution["userAgent"], "sec-ch-ua": solution["secChUa"]})
print("Application HTTP status:", response.status_code)
# Check the application's actual response and required CSRF/session fields.successful_proxy(request, result) выбирает прокси для повторного использования при отправке. Сохраните проверку, которая останавливает отправку, если функция не вернула допустимый прокси. Используйте актуальный параметр HTTPX в единственном числе — proxy=, а не proxies=. Настройка trust_env=False не позволяет настройкам прокси из окружения изменить явно выбранный маршрут.
Используйте cookies, параметры браузера и поля формы вместе
Если приложению нужен предварительный запрос страницы для создания сессии или получения значения CSRF, выполните его в том же клиенте HTTPX до POST-запроса. Его хранилище cookies сохраняет их между запросами. У отдельного клиента эта сессия автоматически не появится.
Для этих предварительных запросов также используйте возвращённые userAgent и secChUa, а не параметры другого браузера. В примере они передаются в POST-запросе как User-Agent и sec-ch-ua. При отправке решения целевому сайту используйте те же заголовки и успешный прокси.
data= отправляет данные формы. Здесь в g-recaptcha-response передаётся solution.token; туда нельзя передавать ID задачи или весь словарь решения. Используйте имя поля из фактического запроса целевого сайта и включайте все необходимые учётные данные, скрытые поля и значение CSRF в ту же отправку.
Проверьте перенаправления, прежде чем считать отправку успешной
follow_redirects=False позволяет увидеть первый ответ приложения. Если это перенаправление, проверьте его статус и адрес назначения, прежде чем явно перейти к ожидаемому следующему шагу приложения с тем же клиентом. Не отправляйте токен повторно на другой URL автоматически.
Выведенный HTTP-статус — лишь отправная точка. Проверьте тело ответа, адрес перенаправления или итоговое состояние приложения, чтобы определить, принял ли целевой сайт запрос. Ответ 200 или перенаправление могут означать как успех, так и сценарий ошибки; статус ready в solvethree означает, что решение создано, а не что целевой сайт его принял.
Источники и справочник API
Запустите первую задачу.
Начните с $5 на балансе рабочего пространства.