
Sora Fujimoto
AI Solutions Architect

CrewAIは複数のAIエージェントを統合して複雑なタスク—研究、データ収集、コンテンツ作成、ワークフローの自動化—を実行します。CrewAIのエージェントがウェブ操作中にCAPTCHAチャレンジに遭遇すると、全体のマルチエージェントパイプラインが停止します。CapSolverのcapsolver-agentパッケージはCrewAIワークフローに直接統合され、エージェントがreCAPTCHA、Cloudflare Turnstile、その他の検証チャレンジを解く能力を提供し、コラボレーティブな実行フローを中断することなく運用できます。
capsolver-agentエクスキューターはCapSolverのAIサービスを通じて解決を処理し、構造化された結果を返しますcreate_executor()とCrewAIの@toolデコレータを使用して統合できますCrewAIは、複数の能力を必要とするタスクに特化したAIエージェントのチームが協力できるようにします。典型的なクルーには、ウェブをブラウズする研究者エージェント、データを処理するアナリストエージェント、レポートを作成するライターエージェントが含まれます。研究者エージェントがターゲットサイトでCAPTCHAに遭遇すると、進行できません—CrewAIエージェントは出力を逐次的に渡すため、クルー全体のワークフローが停止します。
この問題はCrewAIでさらに深刻になります。複数のエージェントがウェブアクセスを必要とするためです。リードの拡充クルーには、会社データをスクレイピングするエージェントと、連絡先情報を検証するエージェントが含まれる可能性があり、両方とも同時に異なるサイトでCAPTCHAに遭遇します。解決メカニズムがない場合、生産用クルーは常に人間の監視を必要とし、自律的なマルチエージェントのオーケストレーションの目的を無効にします。
CapSolverの生産データによると、約30%のエージェントのウェブタスクが検証チャレンジに遭遇します。CrewAIクルーが10のウェブ依存タスクを実行する場合、1回の実行で3つの潜在的な停止ポイントがあり、自動解決がないと手動介入が必要です。
必要なパッケージをインストールします:
# CapSolverコアエンジン(必須の依存関係)
pip install git+https://github.com/capsolver-ai/capsolver-core.git
# CapSolverエージェントツール
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
# CrewAIフレームワーク
pip install crewai crewai-tools
環境変数を設定します:
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"
CapSolverアカウントを取得し、APIクレジットを残していることを確認してください。CapSolverの料金ページでは、各CAPTCHAタイプの現在の料金が表示されます。
CrewAIは@toolデコレータで定義されたカスタムツールを使用します。CapSolverのエクスキューターをCrewAI互換のツールにラップします:
import asyncio
from crewai import Agent, Task, Crew
from crewai.tools import tool
from capsolver_agent.schema import create_executor
# CapSolverエクスキューターを作成
executor = create_executor(api_key="YOUR_CAPSOLVER_API_KEY")
@tool("CAPTCHAを解決")
def solve_captcha(captcha_type: str, website_url: str, website_key: str) -> str:
"""CAPTCHAチャレンジを解決し、トークンを返します。
ウェブサイトでCAPTCHAに遭遇したときにこのツールを使用してください。
引数:
captcha_type: CAPTCHAの種類 - 'reCaptchaV2', 'reCaptchaV3', または 'cloudflare'
website_url: CAPTCHAが表示されているページの完全なURL
website_key: サイトキー(data-sitekey属性の値)
戻り値:
フォームに送信する解決されたCAPTCHAトークン
"""
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
}))
if result["success"]:
return f"CAPTCHAは正常に解決されました。トークン: {result['solution']['token']}"
else:
return f"CAPTCHA解決に失敗しました: {result['error']}"
このツールはCrewAIの標準的なパターンに従っており、@toolデコレータはエージェントのLLMがいつ呼び出すかを決定するために名前と説明を登録します。
CrewAIエージェントはツールの説明に基づいてツールを選択します。明確に記述されたCAPTCHA解決ツールは、エージェントがいつ解決が必要かを自律的に認識し、正しいパラメータでツールを呼び出すことを可能にします。構造化された戻り形式は、エージェントに成功または失敗の明確なフィードバックを提供します。
asyncio.run()でラップしてください。CAPTCHA解決を備えたCrewAIエージェントを作成します:
from crewai import Agent
# CAPTCHA解決機能を持つ研究者エージェント
researcher = Agent(
role="ウェブリサーチ専門家",
goal="ウェブサイトからデータを収集し、遭遇したCAPTCHAチャレンジを処理します",
backstory="""あなたはさまざまなオンラインソースからデータを収集するエキスパートのウェブリサーチャーです。ウェブサイトでCAPTCHAチャレンジに遭遇した場合は、solve_captchaツールを使用してクリアし、研究を続けます。reCaptchaV2(チェックボックスまたは非表示)、reCaptchaV3(スコアベース)、cloudflare(Turnstileウィジェット)のCAPTCHAタイプを識別する方法を知っています。""",
tools=[solve_captcha],
verbose=True
)
ウェブアクセスが必要な複数のエージェントを持つクルーの場合、各エージェントにCAPTCHAツールを提供してください:
# データ収集エージェント
data_collector = Agent(
role="データ収集専門家",
goal="ターゲットウェブサイトから構造化されたデータを抽出します",
backstory="あなたはウェブソースからデータを収集し、必要に応じてsolve_captchaツールを使用してCAPTCHAチャレンジを処理します。",
tools=[solve_captcha],
verbose=True
)
# 検証エージェント
verifier = Agent(
role="データ検証専門家",
goal="収集されたデータを公式ソースと照合します",
backstory="あなたは公式ソースをチェックしてデータの正確性を検証し、必要に応じてCAPTCHAを解決します。",
tools=[solve_captcha],
verbose=True
)
CAPTCHA解決が必要なタスクを定義し、それらをクルーに組み合わせます:
from crewai import Task, Crew, Process
# CAPTCHAに遭遇する可能性のあるタスク
research_task = Task(
description="""{url}のターゲットウェブサイトをリサーチしてください。
CAPTCHAチャレンジに遭遇した場合は、その種類とサイトキーを特定し、solve_captchaツールを使用してトークンを取得してください。
このサイトではreCAPTCHA v2を使用しており、サイトキーは{site_key}です。
CAPTCHAを解決した後、必要なデータを収集してください。""",
expected_output="必要に応じてCAPTCHAトークンを含むターゲットウェブサイトからのデータを収集",
agent=researcher
)
# 分析タスク(リサーチ結果に依存)
analysis_task = Task(
description="リサーチャーが収集したデータを分析し、要約レポートを作成してください。",
expected_output="収集されたデータの構造化された分析レポート",
agent=data_collector
)
# クルーを作成
crew = Crew(
agents=[researcher, data_collector],
tasks=[research_task, analysis_task],
process=Process.sequential,
verbose=True
)
# クルーを実行
result = crew.kickoff(inputs={
"url": "https://example.com/data",
"site_key": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"
})
print(result)
シーケンシャルプロセスは、リサーチャーがCAPTCHA解決を完了するまでデータコレクターが分析を開始しないようにします。並列実行の場合、各エージェントは割り当てられたサイトでCAPTCHAを個別に処理します。
CrewAIの強みはマルチエージェントの協働です。CAPTCHA解決機能を必要とするエージェントに提供することで、クルーはエンドツーエンドで自律的に動作します。検証チャレンジが発生した場合、人間の介入は必要ありません—エージェントは状況を認識し、ツールを呼び出し、作業を続けます。
異なるウェブサイトでは異なるCAPTCHAシステムが使用されます。一般的なシナリオ用の専門的なツールを作成します:
@tool("reCAPTCHA v3を解決")
def solve_recaptcha_v3(website_url: str, website_key: str, page_action: str = "verify") -> str:
"""reCAPTCHA v3チャレンジを高スコアトークンで解決します。
サイトが非表示のreCAPTCHA v3(スコアベース、チェックボックスなし)を使用している場合に使用してください。
引数:
website_url: ページの完全なURL
website_key: reCAPTCHAサイトキー
page_action: v3スコアリング用のアクション名(デフォルト: 'verify')
"""
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": "reCaptchaV3",
"website_url": website_url,
"website_key": website_key,
"page_action": page_action,
"min_score": 0.7
}))
if result["success"]:
return f"reCAPTCHA v3は解決されました。トークン: {result['solution']['token']}"
return f"失敗: {result['error']}"
@tool("Cloudflare Turnstileを解決")
def solve_turnstile(website_url: str, website_key: str) -> str:
"""Cloudflare Turnstileチャレンジを解決します。
サイトがCloudflareで保護されており、Turnstileウィジェットが表示されている場合に使用してください。
引数:
website_url: ページの完全なURL
website_key: Turnstileサイトキー(0xで始まる)
"""
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": "cloudflare",
"website_url": website_url,
"website_key": website_key
}))
if result["success"]:
return f"Turnstileは解決されました。トークン: {result['solution']['token']}"
return f"失敗: {result['error']}"
| CAPTCHAタイプ | 使用するツール | 平均解決時間 | 一般的な使用場面 |
|---|---|---|---|
| reCAPTCHA v2 | solve_captcha | 5-12秒 | ログインページ、フォーム |
| reCAPTCHA v3 | solve_recaptcha_v3 | 3-8秒 | API、非表示の保護 |
| Cloudflare Turnstile | solve_turnstile | 2-5秒 | モダンなSaaS、Shopify |
CapSolverのreCAPTCHAガイドとCloudflare Turnstileガイドでは、各CAPTCHAタイプのパラメータと動作の詳細が提供されています。
ボーナスコードを取得してください: CapSolverダッシュボードでコード WEBS を使用すると、毎回の充電で追加の5%のボーナスを獲得できます。CrewAIマルチエージェントワークフローをスケールして実行するチームに最適です。
本番用のCrewAIデプロイメントでは、エラーハンドリングとリトライロジックを追加します:
@tool("失敗時に自動リトライするCAPTCHAを解決")
def solve_captcha_robust(captcha_type: str, website_url: str, website_key: str) -> str:
"""失敗時に自動リトライするCAPTCHAを解決します。
失敗した場合、最大3回まで試行します。
"""
for attempt in range(3):
result = asyncio.run(executor.execute("solve_captcha", {
"captcha_type": captcha_type,
"website_url": website_url,
"website_key": website_key
}))
if result["success"]:
return f"試行{attempt + 1}で解決しました。トークン: {result['solution']['token']}"
if attempt < 2:
import time
time.sleep(3)
return f"3回の試行後に失敗しました: {result.get('error', '不明なエラー')}"
複数のサイトを処理するクルーでは、開始前に残高チェックを実装します:
@tool("CAPTCHAソルバー残高を確認")
def check_balance() -> str:
"""CAPTCHAソルバーの残高を確認します。"""
result = asyncio.run(executor.execute("get_balance", {}))
if result["success"]:
return f"残高: ${result['balance']:.2f}"
return "残高を確認できませんでした"
CapSolverのウェブスクレイピングドキュメントは、CrewAIリサーチエージェントに適用可能な高ボリュームデータ収集の追加パターンをカバーしています。ブラウザ自動化を使用するエージェントの場合、CapSolver拡張機能は開発中のCAPTCHAパラメータの識別に役立ちます。
CrewAIマルチエージェントワークフローにCAPTCHA解決を統合するには、CapSolverのエクスキューターをCrewAI互換の@tool関数にラップし、ウェブタスクを実行するエージェントにこれらのツールを割り当て、検証チャレンジを通過できるようにクルーを構成する必要があります。CapSolverは、人間の介入なしでマルチエージェントパイプラインを実行するためのAI駆動の解決インフラを提供します。
最初に単一のCAPTCHA解決ツールを作成し、1つのエージェントでテストしてから、複数のウェブ対応エージェントを持つ完全なクルーに拡張してください。ツールベースのアプローチにより、エージェントはコンテキストに基づいていつ解決するかを決定します—ハードコードされたCAPTCHA検出ロジックは必要ありません。
はい。CAPTCHA解決ツールを持つ各エージェントは、個別に呼び出すことができます。CapSolverのAPIは並列タスクの提出をサポートしており、レート制限がないため、並列クルー実行は競合なく動作します。各解決はユニークなリクエストIDでトラッキングされ、デバッグに役立ちます。
エージェントのLLMはツールの説明とタスクの文脈に基づいて状況を推論します。タスクがCAPTCHA保護されたリソースへのアクセスを含む場合、エージェントは必要性を認識し、適切なパラメータで解決ツールを呼び出します。タスクの説明にCAPTCHAの詳細を含めることで明示的なガイドラインを提供することもできます。
ツールはエージェントに失敗メッセージを返します。エージェントはその後、リトライ、代替パラメータの試行、またはタスク出力に失敗を報告できます。CrewAIのエラーハンドリングにより、1つのタスクが解決不能なCAPTCHAに遭遇しても、残りのタスクは継続して実行されます。
はい。階層的モードではマネージャーエージェントがタスクをクルーに委譲します。委譲されたタスクがCAPTCHA解決を必要とする場合、割り当てられたエージェントは独自にツールを使用します。マネージャーはCAPTCHA解決の詳細を理解する必要なく、完了した結果を受け取ります。
コストは遭遇するCAPTCHAの数と種類によって異なります。reCAPTCHA v2は約1,000件あたり2〜3ドル、reCAPTCHA v3は1,000件あたり1〜2ドル、Cloudflare Turnstileは1,000件あたり1〜2ドルです。1回の実行で3〜5個のCAPTCHAに遭遇する典型的なCrewAI研究クルーの場合、実行あたりのコストは0.005〜0.015ドルです。
ステップバイステップガイド: CapSolverのfunction_toolを使用してOpenAI Agents SDKにreCAPTCHAの解決を統合する方法、v2およびv3用の非同期コード例を含む。

LangGraph Cloudflare Turnstileソルバーのワークフローを構築するには、CapSolver、Playwrightセッション処理、ポリシーゲート、リトライ、検証、およびレビューを用いてください。
