Browser Use. agent runner


エージェントの自動化 · ブラウザの使用
ブラウザ内で CAPTCHA を解決するエージェントを使用する
CapSolver をブラウザ使用のカスタム アクションとして追加します。 CAPTCHA または検証チャレンジが表示されると、エージェントは必要な詳細を CapSolver に送信し、ソリューションを受信して、承認されたブラウザのワークフローを続行できます。 QA、RPA、およびその他のユーザーが承認したブラウザ自動化用に構築されています。
概要
CapSolver + Browser Use の統合は何をしますか?
ブラウザーの使用は、AI エージェントが Web サイトをナビゲートして操作するのに役立ちます。 CAPTCHA が表示されると、CapSolver がチャレンジを処理して結果を返し、エージェントがタスクを続行できるようにします。
ブラウザ使用で動作します
自動化されたブラウザーのワークフロー中に表示され、トークンベースの検証を必要とする、広く使用されている検証チャレンジ。
トークンがエージェントに返されました
CapSolver は CAPTCHA の結果を返すため、エージェントはそれを適用して続行できます。
本番環境に対応
各ソルブは、ログ記録と再試行のためのタスク ID (taskId)、ステータス、およびエラーの詳細を返します。
問題
CAPTCHA がブラウザ使用エージェントを停止するのはなぜですか?
ブラウザ使用エージェントはナビゲート、クリック、入力できますが、CAPTCHA と検証チェックにより複数ステップのタスクが中断される可能性があります。これらに対処する方法がなければ、エージェントは停止したり、同じ手順を繰り返したり、人の助けが必要になったりする可能性があります。
ワークフローの中断
CAPTCHA により、ブラウザ タスクの途中でエージェントを停止できます。
手動フォールバック
エージェントがブロックされた場合は、チームの誰かが介入する必要があります。
CAPTCHA 処理なし
ブラウザの使用では、クリックして入力することはできますが、CAPTCHA が表示されるときはまだヘルプが必要です。
新しい IP だけでは十分ではありません
IP を変更すると解決する場合もありますが、ページ上にすでに存在する CAPTCHA は解決されません。
使用例
CapSolver をブラウザ使用エージェントに追加する必要があるのはいつですか?
パブリックデータのワークフロー
CAPTCHA チェックがタスクを中断する場合に、承認された研究とデータ収集をサポートします。
フォームとワークフローのテスト
承認された環境でサインアップ、ログイン、チェックアウト、フォーム フローをテストします。
社内のビジネスワークフロー
社内ツールやビジネス システム全体で承認されたブラウザー タスクをサポートします。
監視対象ブラウザエージェント
CAPTCHA が承認されたブラウザ タスクを中断した場合でも、監視対象 AI エージェントが続行できるようにします。
クイックスタート
CapSolver をカスタム アクションとして登録する
以下の例は現在、CapSolver のパブリック REST API に対して動作します。エージェントが任意の CAPTCHA で呼び出すことができる 1 つのアクションを登録し、それを解決して、トークンをエージェントに返します。エージェントは、チャレンジ フィールドに入力して送信します。
# pip install browser-use capsolver-agent
# export CAPSOLVER_API_KEY=CAP-XXXXXX
# export OPENAI_API_KEY=sk-XXXXXX
import asyncio
import json
import os
from browser_use import ActionResult, Agent, Browser, ChatOpenAI, Tools
from capsolver_core import Capsolver
from capsolver_core.capsolver import SolveOnPageOptions
from _env import load_example_env # demo only: reads repo-root .env
load_example_env()
# 1. Adapt Browser Use's live page to capsolver-core's PageDriver (evaluate + url).
class PageDriver:
def __init__(self, session):
self.session = session
async def url(self) -> str:
return await self.session.get_current_page_url()
async def evaluate(self, script: str, arg=None):
cdp = await self.session.get_or_create_cdp_session()
result = await cdp.cdp_client.send.Runtime.evaluate(
params={
"expression": f"({script})({json.dumps(arg)})",
"returnByValue": True,
"awaitPromise": True,
},
session_id=cdp.session_id,
)
return result.get("result", {}).get("value")
# 2. Register one action: detect + solve + autofill on the page the agent controls.
tools = Tools()
capsolver = Capsolver(api_key=os.environ["CAPSOLVER_API_KEY"])
@tools.action(
description="Solve and autofill every supported captcha (reCaptchaV2 / reCaptchaV3 / "
"cloudflare) on the current page. Never solve a captcha yourself."
)
async def solve_page_captchas(browser_session) -> ActionResult:
results = await capsolver.solve_on_page(
PageDriver(browser_session),
options=SolveOnPageOptions(autofill=True, throw_on_error=False),
)
if not results:
return ActionResult(extracted_content="No supported captcha on this page.")
filled = sum(1 for r in results if r.filled)
if not filled:
return ActionResult(error="; ".join(r.error or "not filled" for r in results))
return ActionResult(
extracted_content=f"Filled {filled}/{len(results)} captcha tokens. Continue the "
"workflow now, e.g. click Submit.",
)
# 3. Hand the action to the agent; the LLM decides when to call it.
model = os.environ.get("OPENAI_MODEL", "gpt-4o")
# OpenAI-compatible gateways (DeepSeek, ...) reject OpenAI's structured-output format.
compat = {} if "openai.com" in os.environ.get("OPENAI_BASE_URL", "openai.com") else {
"dont_force_structured_output": True,
"add_schema_to_system_prompt": True,
}
agent = Agent(
task="Solve the captcha on this page, then click Submit and report the result.",
llm=ChatOpenAI(model=model, **compat),
browser=Browser(headless=False),
tools=tools,
initial_actions=[{"navigate": {"url": "https://www.google.com/recaptcha/api2/demo"}}],
)
# 4. Run.
asyncio.run(agent.run())
ステップバイステップ
4 つのステップで CAPTCHA 解決を追加する方法
キーをインストールして設定する
ブラウザ用とHTTPクライアントをインストールし、CAPSOLVER_API_KEYをエクスポートします。決してハードコーディングしないでください。
カスタムアクションを登録する
CapSolver を呼び出して CAPTCHA を解決し、トークンを返す @tools.action を追加します。
ツールをエージェントに渡す
CAPTCHA が表示されるたびにエージェントがsolve_captcha を呼び出せるように、ツール レジストリをエージェントに提供します。
実行して回復する
エージェントを実行します。失敗すると、ログ記録と再試行のためにタスク ID を含む構造化エラーが返されます。
適用範囲
CapSolver はブラウザでの使用に対してどの CAPTCHA タイプをサポートしていますか?
ブラウザの使用は、reCAPTCHA v2、reCAPTCHA v3、それらの Enterprise バリアント、および Cloudflare Turnstile をサポートします。
reCAPTCHA v2
標準、非表示、および Enterprise reCAPTCHA v2 チャレンジ。
reCAPTCHA v3
アクションのサポートを備えたスコアベースの Enterprise reCAPTCHA v3 チャレンジ。
クラウドフレア回転木戸
管理された非インタラクティブな非表示のターンスタイル ウィジェット。
その他の CAPTCHA タイプ
CapSolver API を通じて利用できる追加の CAPTCHA タスク タイプを調べてください。
位置決め
ブラウザの使用 + CapSolver とプロキシのローテーション
プロキシは、ブラウザ使用エージェントが Web サイトにアクセスするのに役立ちます。 CapSolver は、サポートされている CAPTCHA が表示されたときに処理し、エージェントがタスクを続行できるようにします。
能力
プロキシ/IPローテーション
キャップソルバー
目的のページに到達
はい
併用する
画面上の CAPTCHA に応答します
いいえ
一緒に働きます
サポートされている CAPTCHA を解決します
いいえ
はい
CAPTCHAトークンを返します
再試行します。再ブロックされる可能性があります
はい
タスクの詳細を提供します
異なります
タスクID、ステータス、エラー
ブラウザの設定とプロキシを維持します。サポートされている CAPTCHA が表示されたときに処理できるように CapSolver を追加します。
生産
運用環境のブラウザ使用エージェントのベスト プラクティス
エージェントを実行する前に CapSolver を追加する
エージェントがブラウザ タスクを開始する前に CAPTCHA 解決を利用できるようにします。
成功と失敗を処理する
結果が成功した後はエージェントを続行させ、リクエストが失敗した場合は安全に停止させます。
すべての CAPTCHA リクエストをログに記録します
各リクエストのタスク ID、CAPTCHA タイプ、ステータス、エラーを記録します。
リクエストのタイムアウトを設定する
エージェントがスタックしたままにならないように、設定時間が経過したら待機を停止します。
正しい応答フィールドを使用してください
reCAPTCHA と Cloudflare Turnstile は、異なるフィールドで結果を返します。
API キーを安全に保管する
CAPSOLVER_API_KEY を環境変数またはシークレット マネージャーに保持します。
よくある質問
ポリシー
責任ある使用
CapSolver は、承認された QA テスト、RPA ワークフロー、アクセシビリティ ツール、パブリック データ アクセス、およびその他の準拠タスクなど、責任ある自動化を目的として設計されています。ユーザーは、アクセスするサイトの該当するサービス利用規約および規制に確実に準拠して使用する責任があります。 CapSolver は、不正アクセスや悪意のある自動化をサポートまたは容認しません。
関連する統合
エージェント スタック向けの CapSolver 統合をさらに検討する
別の統合を選択して、エージェントまたはブラウザのワークフローに CAPTCHA 解決を追加します。

