AxiosでCAPTCHAの解答を送信する
Node.js SDK で解決してから、対象へのリクエストに Axios を使用します。成功したプロキシを HttpsProxyAgent に渡し、Axios が競合するプロキシ設定を適用しないように proxy: false を設定してください。フォームフィールド、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 リクエストに使用します。
// 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 から solvethree API への接続を設定するものではありません。リクエストが完了または失敗すると、エージェントは破棄されます。
返された userAgent と secChUa の値は、そのプロキシと組み合わせて使用してください。トークンを送信する際に、無関係なブラウザーヘッダーに置き換えないでください。
アプリケーションのレスポンスを確認する
Axios の呼び出しはタイムアウトが30秒で、リダイレクトには追従しません。validateStatus はすべての HTTP ステータスを受け入れるため、response.status とレスポンス本文を自分で確認してください。HTTP エラーレスポンスでも、ステータスだけを理由に例外がスローされることはありません。
タスクが ready であることは、解答が生成されたことを意味し、対象サイトがそれを受け入れたことを意味するわけではありません。ログに記録された HTTP ステータスをログイン成功の証拠とせず、アプリケーションの実際の成功条件を確認してください。
参照元とAPIリファレンス
最初のタスクを実行しましょう。
$5のワークスペースクレジットで始められます。