実際にタスクを解決したプロキシを使う
proxyCandidatesを送信した場合は、solution.egressAttemptsを使ってタスクを解決したプロキシを特定してください。これは元の候補リストに対する1始まりのインデックスです。解決結果を対象サイトに送信するときは、リスト内の別のプロキシではなく、そのプロキシを使用してください。
このページの内容
元の候補リストを保持する
proxyまたはproxyCandidatesのどちらか一方だけを指定してください。候補リストには、パス、クエリ、フラグメントを含まない、互いに異なるHTTPまたはHTTPSプロキシURLを最大12個指定できます。成功したプロキシを選択するまで、元のリクエストと候補の順序を保持してください。後からリストを並べ替えたりフィルタリングしたりすると、インデックスが指す対象が変わります。
候補を指定すると、solvethreeは代替の送信経路を試せますが、プロキシや対象サイトが機能することは保証されません。セッションタスクには、候補リストではなく単一のproxyが必要です。
プロキシを選択する前にインデックスを検証する
reCAPTCHA、Kasada、TMPTでは、solution.egressAttemptsが成功した候補を示します。元の配列の長さを上限とする、1以上の整数である場合にのみ受け入れてください。JavaScriptの配列やPythonのリストのインデックスとして使う場合は、1を引いてください。
| 元の位置 | 候補 | 選択済み |
|---|---|---|
| 1 | PROXY_A | いいえ |
| 2 | PROXY_B | はい |
| 3 | PROXY_C | いいえ |
この場合、成功したのは2番目のプロキシPROXY_Bで、配列のオフセットは1です。インデックスが存在しない、小数である、ゼロである、またはリストの範囲外である場合は、処理を停止してください。最初のプロキシで代用したり、リストの順序から成功したプロキシを推測したりしないでください。
SDKヘルパーを使い、選択したプロキシを再利用する
元のタスクと準備完了の結果を、JavaScriptのsuccessfulProxyまたはPythonのsuccessful_proxyに渡してください。サンプルではsolveを呼び出してタスクを作成し、準備完了になるかエラーが発生するまでポーリングした後、ヘルパーがプロキシを返さなければ処理を停止します。
サーバー上でSOLVETHREE_API_KEYと3つのプロキシ環境変数を設定してください。各プロキシ変数には、互いに異なる有効なプロキシ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のワークスペースクレジットで始められます。