使用实际完成任务求解的代理

作者:solvethree阅读需 1 分钟

发送 proxyCandidates 时,使用 solution.egressAttempts 找到成功完成任务求解的代理。它是原始候选列表中从 1 开始的索引。向目标提交求解结果时,应使用该代理,而不是列表中的其他代理。

本页内容

保留原始候选列表

必须且只能提供 proxy 或 proxyCandidates 中的一项。候选列表最多接受十二个不同的 HTTP 或 HTTPS 代理 URL,且不得包含路径、查询参数或片段。在选出成功的代理之前,请保留原始请求和候选顺序;事后对列表排序或筛选会改变索引指向的代理。

候选代理让 solvethree 可以尝试其他出口,但不保证代理或目标一定可用。会话任务需要单个 proxy,不能使用候选列表。

选择代理前先验证索引

对于 reCAPTCHA、Kasada 和 TMPT,solution.egressAttempts 标识成功的候选代理。仅当它是 1 到原始数组长度之间的整数时才接受。用它访问 JavaScript 数组或 Python 列表时,需要减去一。

示例结果:已就绪的任务返回的 egressAttempts 等于 2。
示例结果:已就绪的任务返回的 egressAttempts 等于 2。
原始位置候选代理是否选中
1PROXY_A否
2PROXY_B是
3PROXY_C否

这里成功的是第二个代理 PROXY_B,其数组偏移量为 1。如果索引缺失、为小数、为零或超出列表范围,请停止操作。不要改用第一个代理,也不要根据列表顺序推断哪个代理成功。

使用 SDK 辅助函数,然后复用所选代理

将原始任务和已就绪的结果传给 JavaScript 的 successfulProxy 或 Python 的 successful_proxy。示例调用 solve 创建任务并轮询,直到任务就绪或抛出错误;如果辅助函数未返回代理,则停止操作。

在服务器上设置 SOLVETHREE_API_KEY 和三个代理环境变量。每个代理变量必须包含一个不同的有效代理 URL。将示例站点和操作替换为预期目标和操作。示例要求 Node.js 22+ 或 Python 3.10+。

Node.js · 选择成功的代理
import { Solvethree, successfulProxy } from '@solvethree/sdk';

const client = new Solvethree({ apiKey: process.env.SOLVETHREE_API_KEY });
const request = {
  site: 'accounts.example.com', action: 'login',
  proxyCandidates: [process.env.PROXY_A, process.env.PROXY_B, process.env.PROXY_C],
};
const result = await client.solve(request);
const proxy = successfulProxy(request, result);
if (!proxy) throw new Error('No valid winning proxy index; do not guess');
// For egressAttempts: 2, proxy is request.proxyCandidates[1].
// Submit result.solution through this proxy with its returned browser identity.

将所选代理与返回的 userAgent、secChUa 及预期目标一起保存,并在目标请求中使用该身份信息。SDK 负责选择代理,不会替你配置浏览器或提交求解结果。求解结果就绪并不证明目标已接受它。

运行您的第一个任务。

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

创建工作区
使用实际完成任务求解的代理 · solvethree