APIで標準のreCAPTCHA v3を解く
標準の reCAPTCHA v3 では、タスク本文の recaptchaType を v3 に設定してください。reCAPTCHA Enterprise v3 では enterprise-v3 を使用します。この値は、フィールドを省略した場合のデフォルトでもあります。
このページの内容
プロファイル、ホスト名、アクション、プロキシを準備する
標準の v3 でも、ワークスペースで利用できる有効なサイトプロファイルが必要です。タスクを作成する前に、コンソールで対象サイトを設定してください。ホスト名とアクションを送信しても、プロファイルは作成されません。
site:accounts.example.comなどの対象ホスト名。ページの完全な URL ではありません。action:対象の reCAPTCHA 連携で使用されているアクション。対象が別のアクションを使用している場合は、例のloginを置き換えてください。アクションの調べ方を参照してください。proxyまたはproxyCandidates:どちらか一方だけを指定してください。この例では単一のプロキシを使用します。代わりに候補を使用する場合、リストには重複しない HTTP または HTTPS のプロキシ URL を最大 12 件指定できます。パス、クエリ、フラグメントは含めないでください。
標準の v3 タスクを送信する
この JSON 本文を POST https://api.solvethree.com/v1/tasks に送信してください。Authorization ヘッダーにワークスペースの API キーを指定し、Bearer スキームで認証します。キーはサーバー上で管理してください。
{
"site": "accounts.example.com",
"action": "login",
"recaptchaType": "v3",
"proxy": "http://user:[email protected]:8080",
"requestId": "v3-login-001"
}recaptchaType は、site、action、proxy と同じトップレベルに指定します。reCAPTCHA には type フィールドや url フィールドを追加しないでください。
サンプルのホスト名、アクション、プロキシを、対象の値に置き換えてください。論理的に新しい解決処理ごとに、新しい requestId を使用します。作成がタイムアウトした場合は、同じ ID で同じタスク本文を再送信して、新たに作成するのではなく既存のタスクを復旧してください。その ID を異なる入力で再利用すると競合します。
準備完了を待ってトークンを送信する
- 1.
最初に HTTP レスポンスを確認する
本文をタスク結果として読み取る前に、成功以外の HTTP レスポンスを処理してください。ステータスを確認し、報告されたリクエストエラーを修正します。
- 2.
完了するまでタスクを取得する
作成時はデフォルトで最大 15 秒待機します。クライアントのタイムアウトには、ネットワークのオーバーヘッド分の余裕を持たせてください。ステータスが
pendingまたはsolvingの場合は、GET /v1/tasks/:idでタスクを取得します。GET ポーリングはデフォルトでは待機しません。ロングポーリングを行うには、JSON フィールドではなく URL クエリパラメーターとして、最大 15000 のwaitMsを渡してください。readyまたはfailedになったらポーリングを停止します。failedの場合は、errorCodeとerrorを確認してから、再試行が適切かどうかを判断してください。 - 3.
準備完了の解決結果を使用する
意図した対象に、タスク ID ではなく
solution.tokenを送信してください。返されたuserAgentとsecChUaを、解決に成功したプロキシとともに使用します。解決から送信までの間に IP を切り替えたり、無関係なブラウザー識別情報に置き換えたりしないでください。
準備完了のトークンは、特定の reCAPTCHA スコアや対象による受け入れを証明するものではありません。reCAPTCHA v3 はリスクスコアとアクションを生成し、対象がバックエンドでそれらを評価します。トークンを送信したリクエストに対する、対象のレスポンスを確認してください。
最初のタスクを実行しましょう。
$5のワークスペースクレジットで始められます。