cURLでreCAPTCHA Enterpriseトークンをリクエストする
サイトのホスト名、アクション、プロキシを指定してタスクを作成します。pendingまたはsolvingが返された場合は、返されたタスクIDでポーリングしてください。ステータスがreadyになった場合にのみ、solution.tokenからトークンを読み取ってください。
このページの内容
サイト、キー、プロキシの準備
- シェルでcURLとjqを使用できるようにしてください。
SOLVETHREE_API_KEYにワークスペースのAPIキーを設定してください。これらのコマンドはサーバー側で実行し、キーをブラウザーコードに含めないでください。SOLVETHREE_PROXYに、解決処理とトークン送信に使用するプロキシURLを設定してください。- コンソールで、ワークスペース用の有効なreCAPTCHAサイトプロファイルを設定してください。例の
accounts.example.comとloginを、それぞれご利用のホスト名とアクションに置き換えてください。
ホスト名とアクションを送信しても、サイトプロファイルは作成されません。解決処理をリクエストする前に、プロファイルを有効にしておく必要があります。
待機時間を明示してタスクを作成する
# Set SOLVETHREE_API_KEY and SOLVETHREE_PROXY in your environment first.
# Replace the hostname and action with your active site profile.
jq -n \
--arg proxy "$SOLVETHREE_PROXY" \
--arg requestId "login-$(date +%s)-$$" \
'{site:"accounts.example.com", action:"login", proxy:$proxy, requestId:$requestId}' \
| curl --fail-with-body --max-time 30 \
'https://api.solvethree.com/v1/tasks?waitMs=15000' \
-H "Authorization: Bearer $SOLVETHREE_API_KEY" \
-H 'Content-Type: application/json' \
--data-binary @-JSONボディでは、site、action、単一のproxyを指定します。proxyまたはproxyCandidatesのいずれか一方だけが必要です。typeやurlは追加しないでください。recaptchaTypeを省略すると、enterprise-v3が選択されます。
waitMs=15000クエリパラメーターは、作成リクエストに最大15秒の待機を指示します。JSONボディではなくURLに指定してください。cURLのタイムアウトは30秒で、サーバー側の待機時間に加え、ネットワークのオーバーヘッドを見込んだ余裕を確保しています。レスポンスが届いた時点でも、タスクがまだ終了状態に達していない場合があります。
レスポンスの確認と未完了タスクのポーリング
ボディをタスクのレスポンスとして解釈する前に、HTTPエラーがないか確認してください。どちらのコマンドも--fail-with-bodyを使用しています。HTTPリクエストの失敗と、ステータスがfailedのタスクは、別々に処理してください。
準備完了のレスポンスは次の形式です。以下の値はプレースホルダーであり、送信可能なトークンではありません。
{
"id": "example-task",
"status": "ready",
"solution": {
"token": "EXAMPLE_TOKEN",
"userAgent": "EXAMPLE_USER_AGENT",
"secChUa": "EXAMPLE_CLIENT_HINTS"
}
}| ステータス | 次の操作 |
|---|---|
| pendingまたはsolving | 返されたidを保持し、同じタスクを取得してください。まだ使用可能な解決結果はありません。代わりのタスクを作成しないでください。 |
| ready | ポーリングを停止し、solution.token、solution.userAgent、solution.secChUaを読み取ってください。 |
| failed | ポーリングを停止し、errorCodeとerrorを確認してください。失敗した解決処理の料金は返金されます。別のタスクを開始する前に、原因を解消してください。 |
終了状態に達していないレスポンスの場合は、環境変数TASK_IDに返されたidを設定し、そのタスクを取得します。
curl --fail-with-body --max-time 30 \
"https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
-H "Authorization: Bearer $SOLVETHREE_API_KEY"このGETは、結果を最大15秒待機し、HTTPタイムアウトは30秒です。waitMsを指定しない場合、GETは待機せずに返ります。ステータスがpendingまたはsolvingの間だけGETを繰り返してください。また、ポーリングループが無期限に実行されないよう、呼び出し側で全体の期限を設定してください。
タスクが失敗した場合は、残高の問題だと決めつけず、エラーの詳細を基に対処してください。たとえば、site-unreachableの場合は、入力を変更せずにやみくもに再送するのではなく、対象への到達性を確認する必要があります。
トークンを送信
対象アプリケーションのリクエストには solution.token を使用してください。タスクの id はタスクの取得専用で、CAPTCHA トークンではありません。トークンを指定する場所は対象のフォームや API によって異なるため、対象への送信に共通して使えるコマンドはありません。
トークンを送信するときは、返された solution.userAgent と solution.secChUa を、解決に成功したプロキシとともに使用してください。上記の単一プロキシの例では、同じ SOLVETHREE_PROXY を使用します。無関係なブラウザー識別情報や対象 URL を混在させないでください。
ready は、solvethree が解決結果を生成したことを意味します。リクエストが受け入れられたかどうかは、対象アプリケーションのレスポンスを別途確認してください。
その他の質問
これは Google の siteverify API と同じものですか?
いいえ。Google の siteverify は既存のトークンを検証するもので、ウェブサイト所有者の検証用シークレットが必要です。solvethree API は、ワークスペースの API キーを使用して解決結果を生成します。タスクリクエストに Google の検証用シークレットを含めないでください。
参照元とAPIリファレンス
最初のタスクを実行しましょう。
$5のワークスペースクレジットで始められます。