Используйте возвращённые User-Agent и Client Hints

Автор: solvethree2 мин на чтение

Используйте возвращенные идентификационные данные браузера в запросе, который отправляет решение на целевой сайт. Задайте оба заголовка из решения и отправьте запрос через прокси, с которым удалось решить задачу.

На этой странице

Замените существующие заголовки браузера

Заголовки исходящего запроса к целевому сайту
Заголовки исходящего запроса к целевому сайту
HTTP-заголовокЗначение из готового решения
User-Agentsolution.userAgent
sec-ch-uasolution.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 — это готовая задача. Оба примера явно задают возвращенные заголовки и направляют запрос через выбранный прокси.

Python requests · применение готового решения
# 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)

Замените URL входа из примера на нужный URL целевого сайта и используйте реальные поля формы, CSRF-токен и сессию этого приложения. Примеры предполагают, что приложение принимает токен в g-recaptcha-response; возвращенные заголовки браузера нужно указывать в HTTP-заголовках, а не в теле формы.

Если целевой сайт отклоняет запрос, проверьте, что фактически отправил HTTP-клиент: значение токена, оба заголовка браузера, прокси и URL назначения. Состояние задачи ready означает, что решение создано, а не что целевой сайт принял отправленные данные. Выведенный HTTP-статус приложения — лишь отправная точка; проверьте ответ приложения, чтобы определить фактический результат: успех или ошибку.

Запустите первую задачу.

Начните с $5 на балансе рабочего пространства.

Создать рабочее пространство
Используйте возвращённые User-Agent и Client Hints · solvethree