
Sora Fujimoto
AI Solutions Architect
発行済み Jul 11, 2023
更新されました Dec 01, 2025 · 最小読み取り

flowTokenがわかっている場合はAntiBotdeflectorTaskProxyLessを使用し、非同期結果はsolution.tokenで返されます。VisionEngineとmodule: "botdeflector"を使用します。このリクエストは直接認識座標を返します。websiteURLとdomainは別々のBotDeflectorフィールドであり、異なるホスト名を含む可能性があります。認証されたブラウザセッションから両方をキャプチャしてください。Queue-it仮想待機ルームは、チケットリリース、製品リリース、在庫が限られたイベントなどのトラフィックピーク時にアクセスを制御します。現在の統合で使用されているCAPTCHAは、単なる文字を含む画像ではなく、BotDeflectorがチャレンジフローを提供し、トークン結果または視覚的な座標を必要とする場合があります。
このアップデートされたガイドでは、CapSolverでサポートされている2つのパスについて説明します。トークンパスは、キャプチャされたflowTokenのデフォルト統合です。ブラウザが対応する前景画像と背景画像を公開している場合、VisionEngineパスが適用されます。CapSolverのCAPTCHA APIドキュメンテーションガイドでは、共有されたタスクライフサイクルとエラーモデルについて説明しています。
現在のQueue-itワークフローは、単一のOCRフォームではなく、BotDeflectorとしてモデル化する必要があります。BotDeflectorチャレンジにはセッションに束縛された入力があり、期待される出力は統合パスに依存します。
| パス | CapSolverタスク | 必要なチャレンジデータ | 結果 |
|---|---|---|---|
| トークンモード | AntiBotdeflectorTaskProxyLess |
websiteURL、domain、flowToken |
ポーリング後にsolution.token |
| 視覚認識モード | VisionEngine with module: "botdeflector" |
image、imageBackground、websiteURL |
createTaskの応答でsolution.points |
これらのモードは交換できません。トークンモードではflowTokenの代わりにBase64画像を許可しません。視覚認識モードでは最終的なBotDeflectorトークンを返しません。認証されたブラウザセッションでチャレンジの実装を確認し、そこに利用可能なデータに一致するパスを選択してください。
Queue-itのトラフィック待機ルームとCAPTCHAソルバーは、異なるキューを使用します。待機ルームは訪問者が続けることができるタイミングを決定し、CapSolver APIはチャレンジタスクを処理します。リクエストキューの用語集は、アプリケーションキューイングとAPIタスクポーリングを分離するための有用な背景を提供します。
タスクを作成する前に以下の準備をします:
domainと現在のflowToken。https://api.capsolver.comにJSONリクエストを送信できるHTTPクライアント。本番用のAPIキーをソースコードに直接配置しないでください。例ではYOUR_API_KEY、FLOW_TOKEN_FROM_PAGE、および例のドメインを使用してプレースホルダーとしています。
トークンモードではAntiBotdeflectorTaskProxyLessを使用し、CapSolverがsolution.tokenを返すまでgetTaskResultをポーリングします。フィールド名と応答の構造は、現在のBotDeflectorトークンモードドキュメンテーションに従います。
同じ認証されたブラウザセッションからこれらの値をキャプチャしてください:
websiteURL: BotDeflectorチャレンジが実行されている完全なページURL。domain: そのチャレンジで必要なBotDeflectorドメイン。flowToken: BotDeflectorフローによって公開された現在のチャレンジトークン。domainがwebsiteURLのホスト名であると仮定しないでください。公式のタスク定義ではこれらを別々の入力として扱い、同じドメイン名を使用しない可能性があります。
キャプチャされた値をcreateTaskに送信します:
curl --request POST 'https://api.capsolver.com/createTask' \
--header 'Content-Type: application/json' \
--data '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "AntiBotdeflectorTaskProxyLess",
"websiteURL": "https://queue.example.com/waitingroom/",
"domain": "challenge.example.net",
"flowToken": "FLOW_TOKEN_FROM_PAGE"
}
}'
成功した作成応答にはタスクIDが含まれます:
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
taskIdを保存する前にerrorIdを確認してください。タスク作成に失敗した場合、APIキーまたは完全なチャレンジトークンを記録せずにerrorCodeとerrorDescriptionをログに記録してください。
返されたタスクIDをgetTaskResultに送信します:
curl --request POST 'https://api.capsolver.com/getTaskResult' \
--header 'Content-Type: application/json' \
--data '{
"clientKey": "YOUR_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}'
応答のステータスがprocessingの間はポーリングを続けます。APIがゼロでないerrorIdまたは失敗ステータスを返した場合はすぐに停止してください。タスクが準備ができたら、solution.tokenからトークンを読み取ります:
{
"errorId": 0,
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006",
"status": "ready",
"solution": {
"token": "BOTDEFLECTOR_TOKEN"
}
}
同じQueue-itブラウザセッションで使用されたBotDeflector統合ポイントに返されたトークンを渡してください。flowTokenをキャプチャして結果を適用する間に新しいブラウザコンテキストを作成しないでください。セッションの変更、ナビゲーション、またはチャレンジのリフレッシュはコンテキストを無効にし、新しいタスクが必要になる可能性があります。
正確な挿入または送信ポイントは、テストしているQueue-it実装に属します。汎用的なセレクターに依存するのではなく、自身のアプリケーション統合からキャプチャしてください。
CapSolverボーナスコードを取得する
自動化予算を即座に増やす!
CapSolverアカウントにチャージするときにボーナスコード CAP26 を使用すると、すべてのチャージで 5%のボーナス を受け取れます — 制限なし。
CapSolverダッシュボードで今すぐ利用してください
次の例は、BotDeflectorタスクを作成し、制限付きタイムアウトでポーリングし、solution.tokenを返します。実際のflowTokenは認証されたブラウザセッションから取得する必要があります。
import os
import time
import requests
API_BASE = "https://api.capsolver.com"
API_KEY = os.environ["CAPSOLVER_API_KEY"]
def solve_botdeflector(website_url, domain, flow_token, timeout=120):
create_response = requests.post(
f"{API_BASE}/createTask",
json={
"clientKey": API_KEY,
"task": {
"type": "AntiBotdeflectorTaskProxyLess",
"websiteURL": website_url,
"domain": domain,
"flowToken": flow_token,
},
},
timeout=30,
)
create_response.raise_for_status()
created = create_response.json()
if created.get("errorId"):
raise RuntimeError(
f"createTask failed: {created.get('errorCode')} - "
f"{created.get('errorDescription')}"
)
task_id = created["taskId"]
deadline = time.monotonic() + timeout
while time.monotonic() < deadline:
time.sleep(2)
result_response = requests.post(
f"{API_BASE}/getTaskResult",
json={"clientKey": API_KEY, "taskId": task_id},
timeout=30,
)
result_response.raise_for_status()
result = result_response.json()
if result.get("errorId"):
raise RuntimeError(
f"getTaskResult failed: {result.get('errorCode')} - "
f"{result.get('errorDescription')}"
)
if result.get("status") == "ready":
return result["solution"]["token"]
if result.get("status") == "failed":
raise RuntimeError("BotDeflector task failed")
raise TimeoutError(f"BotDeflector task {task_id} exceeded {timeout}s")
token = solve_botdeflector(
website_url="https://queue.example.com/waitingroom/",
domain="challenge.example.net",
flow_token="FLOW_TOKEN_FROM_PAGE",
)
print(token)
環境変数、リクエスト処理、再利用可能なクライアント構造に関する詳細については、Python CAPTCHA API統合ガイドを参照してください。
チャレンジがBotDeflector認識モジュールに必要な視覚的アセットを公開している場合のみ、VisionEngineを使用してください。このパスは前景imageとimageBackgroundを受け入れ、初期createTask応答でクリック座標を返します。
このリクエストではtype: "VisionEngine"とmodule: "botdeflector"を使用します:
curl --request POST 'https://api.capsolver.com/createTask' \
--header 'Content-Type: application/json' \
--data '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "VisionEngine",
"module": "botdeflector",
"image": "BASE64_FOREGROUND_IMAGE",
"imageBackground": "BASE64_BACKGROUND_IMAGE",
"websiteURL": "https://queue.example.com/waitingroom/"
}
}'
現在のVisionEngineドキュメンテーションによると、このタスクは認識データを直接返します。別途getTaskResultリクエストは必要ありません。成功応答の形式は次の通りです:
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"status": "ready",
"solution": {
"points": [[123, 88], [244, 84], [174, 70]]
},
"taskId": "TASK_ID"
}
返されたポイントを、送信された画像と同じ座標空間で視覚的なチャレンジに適用してください。リサイズせずに元のチャレンジ画像を送信し、同じ寸法で座標を適用してください。ブラウザ自動化がデバイスピクセルレシオのスケーリング、CSSリサイズ、または異なる寸法のスクリーンショットを導入していないか確認してください。
VisionEngineは認識ステップを処理しますが、周囲のブラウザ状態管理を置き換えるものではありません。ページが以降のトークン交換を期待している場合、同じ認証されたセッション内でその交換を続けます。
flowTokenが現在のもので、同じページセッションに属していることを確認してください。また、websiteURLとdomainが1つのホスト名から構築されたものではなく、別々にキャプチャされたものであることを確認してください。制限付きポーリングを使用し、APIエラーでループを停止してください。
拒否されるトークンは、チャレンジ入力をキャプチャした後にページ状態が変化したことを示すことが一般的です。クッキー、ブラウザコンテキスト、URL、チャレンジ状態を結果を適用するまで安定した状態に保ちます。チャレンジがリフレッシュされた場合、新しいflowTokenをキャプチャし、新しいタスクを作成してください。
元のチャレンジ画像をリサイズせずに送信し、同じ寸法で座標を適用してください。ブラウザ自動化がデバイスピクセルレシオのスケーリング、CSSリサイズ、または切り抜きされたスクリーンショットを導入していないか確認してください。
ローカルとCI環境のブラウザバージョン、ビューポート設定、タイミング、クッキー、シークレットの可用性を比較してください。より広範なテストチェックリストについては、自動化QAでのCAPTCHA処理を参照してください。
Queue-itとBotDeflectorの自動化は、所有するシステム、運用するQA環境、またはサイト所有者から明示的な許可を与えられたワークフローでのみ使用してください。CAPTCHAソルバーアプリケーションプログラミングインターフェース(API)はアクセス権を付与したり、サイトの利用規約、キュー規則、レートリミット、認証要件を上書きしたりしません。
テストの量を制限し、承認されたテスト以外の高需要の公開イベントには参加しないでください。APIキー、クッキー、flowToken値、および返されたトークンはシクレットとして扱い、スクリーンショット、分析、長期ログから除外してください。
Queue-it CAPTCHA処理は、BotDeflector対応の統合を必要とします。セッショントークンフローにはAntiBotdeflectorTaskProxyLessを使用し、結果はsolution.tokenから読み取ります。チャレンジが前景と背景画像を提供する場合のみ、VisionEngineとbotdeflectorモジュールを使用してください。
重要な実装ルールは、チャレンジキャプチャから結果送信に至るまで、元のブラウザコンテキストを保持することです。認証されたQueue-itテストでは、CapSolverが同じタスクAPIを通じてドキュメント化されたBotDeflectorパスを提供します。
Q: Queue-it BotDeflectorトークンモードで使用するタスクタイプはどれですか?
websiteURL、domain、および現在のflowTokenがわかっている場合はAntiBotdeflectorTaskProxyLessを使用してください。getTaskResultをポーリングし、solution.tokenから完了した値を読み取ってください。
Q: Queue-it BotDeflectorトークンモードにはCAPTCHA画像が必要ですか?
いいえ。トークンモードのタスクはページURL、BotDeflectorドメイン、flowTokenを使用します。チャレンジが前景画像と背景画像を公開している場合、別のVisionEngineパスを使用してください。
Q: いつVisionEngineのbotdeflectorモジュールを使用すべきですか?
imageとimageBackgroundを提供する視覚認識ステップでVisionEngineとmodule: "botdeflector"を使用してください。APIはcreateTask応答でsolution.pointsを直接返します。
Q: なぜBotDeflectorドメインがQueue-itページURLと異なる可能性があるのですか?
BotDeflectorではwebsiteURLとdomainを別々のタスクフィールドとして定義しているため、表示されているQueue-itページとは異なるホスト名を使用する可能性があります。アクティブな統合から両方の値をキャプチャしてください。
Q: 戻されたBotDeflectorトークンを別のブラウザセッションで再利用できますか?
再利用を前提としてはいけません。チャレンジ入力を生成した同じ承認済みブラウザフローにトークンを適用してください;ページやチャレンジが更新された場合、新しい入力を収集し、新しいタスクを作成してください。
Q: 自動的なQueue-it CAPTCHA処理は許可されていますか?
これは、システムを所有している場合またはテストまたは自動化するための明示的な承認を持っている場合にのみ適切です。サイトの利用規約、アクセス制御、キューのポリシー、レートリミット、および適用可能な法律を尊重してください。

Sora Fujimoto
AI Solutions Architect
Connecting agents, browsers, and APIs into one workflow.
著者について
Node.jsで画像CAPTCHAを解くには、ドキュメント化されたImageToTextTaskリクエスト、ローカルなBase64エンコード、直接的なテキスト結果、および小規模なテスト済みクライアントを使用してください。

ImageToTextTaskとVisionEngineを、キャプチャ入力、認識出力、モジュール要件、および応用チェックによって比較し、ソルバータスクを選択する前に。
