Отправьте решение CAPTCHA с Axios

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

Решите CAPTCHA с помощью Node.js SDK, затем используйте Axios для запроса целевому сайту. Передайте успешный прокси в HttpsProxyAgent и задайте proxy: false, чтобы Axios не применял конкурирующую конфигурацию прокси. Поля формы, значение CSRF и cookies сессии по-прежнему должно предоставлять ваше приложение.

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

Установите и настройте SDK

Используйте Node.js 22+ и установите зависимости с помощью npm install axios https-proxy-agent https://solvethree.com/downloads/solvethree-sdk-0.1.0.tgz. Официальный SDK распространяется по этому URL tarball-архива; не подменяйте его предполагаемым пакетом из реестра npm.

  • Задайте для SOLVETHREE_API_KEY API-ключ рабочего пространства. Выполняйте этот код на сервере и храните ключ там же.
  • Задайте для SOLVETHREE_PROXY URL прокси, используемого и для решения CAPTCHA, и для отправки.
  • Перед решением CAPTCHA создайте в консоли активный профиль целевого сайта. Передача имени хоста и действия не создаёт профиль. См. настройку профиля сайта.
  • Замените имя хоста, действие и URL входа из примера значениями вашего приложения. site — это имя хоста, а не полный URL; действие должно соответствовать целевой операции.

Решите CAPTCHA и отправьте токен через успешный прокси

client.solve() создаёт задачу и опрашивает её до готовности либо выбрасывает исключение. Затем пример выбирает исходный успешный прокси с помощью successfulProxy(input, result) и использует его для запроса Axios.

Axios · явно заданный прокси-агент для целевого ресурса
// npm install axios https-proxy-agent and the official solvethree SDK tarball.
import axios from 'axios';
import { HttpsProxyAgent } from 'https-proxy-agent';
import { Solvethree, successfulProxy } from '@solvethree/sdk';
const client = new Solvethree({ apiKey: process.env.SOLVETHREE_API_KEY });
const input = { site: 'accounts.example.com', action: 'login', proxy: process.env.SOLVETHREE_PROXY };
const result = await client.solve(input);
const proxy = successfulProxy(input, result);
if (!proxy) throw new Error('No valid successful proxy');
const agent = new HttpsProxyAgent(proxy);
try {
  const response = await axios.post('https://accounts.example.com/login',
    new URLSearchParams({ 'g-recaptcha-response': result.solution.token }).toString(), {
      httpsAgent: agent, proxy: false, maxRedirects: 0, timeout: 30000,
      headers: { 'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': result.solution.userAgent, 'sec-ch-ua': result.solution.secChUa },
      validateStatus: () => true,
    });
  console.log('Application HTTP status:', response.status);
  // Add the application's real form fields, CSRF value and session cookies.
} finally { agent.destroy(); }

httpsAgent направляет HTTPS-запрос целевому сайту через выбранный прокси. proxy: false отключает отдельную конфигурацию прокси Axios, оставляя управление агенту. Это настраивает запрос целевому сайту, а не соединение SDK с API solvethree. Агент уничтожается после завершения запроса или ошибки.

Используйте возвращённые значения userAgent и secChUa вместе с этим прокси. Не заменяйте их заголовками другого браузера при отправке токена.

Проверьте ответ приложения

Вызов Axios имеет тайм-аут 30 секунд и не следует перенаправлениям. Поскольку validateStatus принимает любой HTTP-статус, проверяйте response.status и тело ответа самостоятельно: HTTP-ответ с ошибкой не вызовет исключение только из-за своего статуса.

Готовая задача означает, что решение сгенерировано, а не что целевой сайт его принял. Проверяйте фактическое условие успешного выполнения в приложении, а не считайте записанный в журнал HTTP-статус доказательством успешного входа.

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

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

Создать рабочее пространство
Отправьте решение CAPTCHA с Axios · solvethree