Используйте возвращённые User-Agent и Client Hints
Используйте возвращенные идентификационные данные браузера в запросе, который отправляет решение на целевой сайт. Задайте оба заголовка из решения и отправьте запрос через прокси, с которым удалось решить задачу.
На этой странице
Замените существующие заголовки браузера
| HTTP-заголовок | Значение из готового решения |
|---|---|
| User-Agent | solution.userAgent |
| sec-ch-ua | solution.secChUa |
Не оставляйте случайный User-Agent из вашего скрапера или существующей HTTP-сессии. Это заменяет возвращенные с решением идентификационные данные браузера посторонними. Если обновить только sec-ch-ua, два заголовка будут описывать разные браузеры.
Заменяйте старые значения, а не добавляйте дублирующие заголовки. Проверьте настройки сессии по умолчанию и промежуточные обработчики формирования запросов, которые могут перезаписать их перед отправкой.
Используйте успешный прокси
Начните с результата ready; состояния pending и solving не содержат пригодного для использования решения. Метод SDK solve ожидает готовый результат или вызывает ошибку.
Если задача отправлена с одним proxy, используйте тот же прокси для запроса к целевому сайту. Если вы указали proxyCandidates, выберите успешный прокси с помощью successful_proxy(original_task, ready_result) в Python или successfulProxy(originalTask, readyResult) в JavaScript. Не используйте просто первого кандидата.
Примеры ниже считывают прокси для исходящего запроса из поля proxy объекта request. Для задачи со списком кандидатов поместите туда значение, выбранное вспомогательной функцией, перед отправкой запроса. Настройка описана в разделе выбора прокси из списка кандидатов.
Отправьте запрос к целевому сайту в Python или Node.js
Эти примеры отправляют токен reCAPTCHA v3 Enterprise. В Python solution — это словарь решения из готового результата. В Node.js result — это готовая задача. Оба примера явно задают возвращенные заголовки и направляют запрос через выбранный прокси.
# Continue after client.solve(). Install requests separately: pip install requests.
import requests
# This example endpoint accepts the standard reCAPTCHA form field.
# Use your application's real URL, form fields, CSRF token and session.
response = requests.post(
"https://accounts.example.com/login",
data={"g-recaptcha-response": solution["token"]},
headers={
"User-Agent": solution["userAgent"],
"sec-ch-ua": solution["secChUa"],
},
proxies={"http": request["proxy"], "https": request["proxy"]},
timeout=30,
allow_redirects=False,
)
# Inspect the application's response to determine whether it accepted the request.
print("Application HTTP status:", response.status_code)// Continue after client.solve(). Install undici separately: npm install undici@7.
import { fetch, ProxyAgent } from 'undici';
const dispatcher = new ProxyAgent(request.proxy);
try {
// Replace the URL and form fields with your application's contract.
const response = await fetch('https://accounts.example.com/login', {
method: 'POST',
dispatcher,
redirect: 'manual',
headers: {
'user-agent': result.solution.userAgent,
'sec-ch-ua': result.solution.secChUa,
},
body: new URLSearchParams({
'g-recaptcha-response': result.solution.token,
}),
signal: AbortSignal.timeout(30_000),
});
console.log('Application HTTP status:', response.status);
await response.arrayBuffer();
} finally {
await dispatcher.close();
}Замените URL входа из примера на нужный URL целевого сайта и используйте реальные поля формы, CSRF-токен и сессию этого приложения. Примеры предполагают, что приложение принимает токен в g-recaptcha-response; возвращенные заголовки браузера нужно указывать в HTTP-заголовках, а не в теле формы.
Если целевой сайт отклоняет запрос, проверьте, что фактически отправил HTTP-клиент: значение токена, оба заголовка браузера, прокси и URL назначения. Состояние задачи ready означает, что решение создано, а не что целевой сайт принял отправленные данные. Выведенный HTTP-статус приложения — лишь отправная точка; проверьте ответ приложения, чтобы определить фактический результат: успех или ошибку.
Источники и справочник API
Запустите первую задачу.
Начните с $5 на балансе рабочего пространства.