使用 Axios 提交 CAPTCHA 解答

作者:solvethree阅读需 1 分钟

使用 Node.js SDK 解题,然后通过 Axios 发出目标请求。将成功使用的代理传给 HttpsProxyAgent,并设置 proxy: false,以免 Axios 应用相冲突的代理配置。表单字段、CSRF 值和会话 Cookie 仍需由应用提供。

本页内容

安装并配置 SDK

使用 Node.js 22+,并通过 npm install axios https-proxy-agent https://solvethree.com/downloads/solvethree-sdk-0.1.0.tgz 安装依赖项。官方 SDK 通过该 tarball URL 分发;不要替换为臆测的 npm 注册表软件包。

  • 将 SOLVETHREE_API_KEY 设为工作区 API 密钥。在服务器端运行此代码,并将密钥保留在服务器端。
  • 将 SOLVETHREE_PROXY 设为解题和提交共同使用的代理 URL。
  • 解题前,先在控制台中为目标网站创建有效配置。提供主机名和操作名称不会创建配置。请参阅站点配置设置。
  • 将示例中的主机名、操作名称和登录 URL 替换为应用所用的值。site 是主机名,而不是完整 URL;操作名称必须与目标操作匹配。

先解题,再通过成功使用的代理提交

client.solve() 创建任务并轮询,直到任务就绪或抛出异常。随后,示例通过 successfulProxy(input, result) 选择最初成功使用的代理,并将其用于 Axios 请求。

Axios · 显式指定目标代理 agent
// 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 的独立代理配置,由 agent 控制代理。这配置的是目标请求,而不是 SDK 到 solvethree API 的连接。请求完成或失败时,agent 会被销毁。

将返回的 userAgent 和 secChUa 值与该代理配套使用。提交令牌时,不要将它们替换为无关的浏览器请求头。

检查应用响应

Axios 调用的超时时间为 30 秒,且不跟随重定向。由于 validateStatus 接受所有 HTTP 状态,请自行检查 response.status 和响应正文;HTTP 错误响应不会仅因其状态而抛出异常。

任务就绪表示已生成解决方案,并不表示目标已接受它。请检查应用实际的成功条件,不要将日志中的 HTTP 状态视为登录成功的证明。

运行您的第一个任务。

使用 $5 工作区额度开始体验。

创建工作区
使用 Axios 提交 CAPTCHA 解答 · solvethree