使用实际完成任务求解的代理
发送 proxyCandidates 时,使用 solution.egressAttempts 找到成功完成任务求解的代理。它是原始候选列表中从 1 开始的索引。向目标提交求解结果时,应使用该代理,而不是列表中的其他代理。
本页内容
保留原始候选列表
必须且只能提供 proxy 或 proxyCandidates 中的一项。候选列表最多接受十二个不同的 HTTP 或 HTTPS 代理 URL,且不得包含路径、查询参数或片段。在选出成功的代理之前,请保留原始请求和候选顺序;事后对列表排序或筛选会改变索引指向的代理。
候选代理让 solvethree 可以尝试其他出口,但不保证代理或目标一定可用。会话任务需要单个 proxy,不能使用候选列表。
选择代理前先验证索引
对于 reCAPTCHA、Kasada 和 TMPT,solution.egressAttempts 标识成功的候选代理。仅当它是 1 到原始数组长度之间的整数时才接受。用它访问 JavaScript 数组或 Python 列表时,需要减去一。
| 原始位置 | 候选代理 | 是否选中 |
|---|---|---|
| 1 | PROXY_A | 否 |
| 2 | PROXY_B | 是 |
| 3 | PROXY_C | 否 |
这里成功的是第二个代理 PROXY_B,其数组偏移量为 1。如果索引缺失、为小数、为零或超出列表范围,请停止操作。不要改用第一个代理,也不要根据列表顺序推断哪个代理成功。
使用 SDK 辅助函数,然后复用所选代理
将原始任务和已就绪的结果传给 JavaScript 的 successfulProxy 或 Python 的 successful_proxy。示例调用 solve 创建任务并轮询,直到任务就绪或抛出错误;如果辅助函数未返回代理,则停止操作。
在服务器上设置 SOLVETHREE_API_KEY 和三个代理环境变量。每个代理变量必须包含一个不同的有效代理 URL。将示例站点和操作替换为预期目标和操作。示例要求 Node.js 22+ 或 Python 3.10+。
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.import os
from solvethree import Solvethree, successful_proxy
client = Solvethree(os.environ["SOLVETHREE_API_KEY"])
request = {
"site": "accounts.example.com", "action": "login",
"proxyCandidates": [os.environ["PROXY_A"], os.environ["PROXY_B"], os.environ["PROXY_C"]],
}
result = client.solve(request)
proxy = successful_proxy(request, result)
if proxy is None:
raise RuntimeError("No valid winning proxy index; do not guess")
# With egressAttempts == 2, proxy is request["proxyCandidates"][1].
# Use this proxy and the returned identity for the target request.将所选代理与返回的 userAgent、secChUa 及预期目标一起保存,并在目标请求中使用该身份信息。SDK 负责选择代理,不会替你配置浏览器或提交求解结果。求解结果就绪并不证明目标已接受它。
运行您的第一个任务。
使用 $5 工作区额度开始体验。