LlamaIndexエージェントにおけるCAPTCHAの解決方法

Sora Fujimoto
AI Solutions Architect
31-Jul-2026
LlamaIndexエージェントは、さまざまなソース間でデータ取得、インデックス作成、クエリワークフローを調整します。これらのエージェントがCAPTCHAチャレンジで保護されたウェブベースのデータソースにアクセスする場合、データインジェストを続けるために解決メカニズムが必要です。CapSolverのcapsolver-agentパッケージは、LlamaIndexのFunctionToolシステムと互換性のあるツールスキーマを提供し、エージェントがreCAPTCHA、Cloudflare Turnstile、その他の検証チャレンジをデータパイプラインの一部として解決できるようにします。
TL;DR
- LlamaIndexエージェントは、ウェブデータソースがCAPTCHA検証で保護されている場合、停止します
- CapSolverは、非同期解決を備えたLlamaIndexの
FunctionToolラッパーを通じて統合されます capsolver-agentエクセキュータは解決を処理し、エージェントの推論ループに構造化された結果を返します- reCAPTCHA v2/v3とCloudflare Turnstileをサポート — 最も一般的なウェブ検証タイプ
create_executor()とFunctionTool.from_defaults()を使用して15行未満で統合できます
LlamaIndexエージェントがCAPTCHA解決を必要とする理由
LlamaIndexは、複数のソースからデータを取得、インデックス作成、クエリするエージェントを構築するのに優れています。これらのソースにCAPTCHAシステムで保護されたウェブページ、API、またはデータベースが含まれる場合、エージェントのデータインジェストパイプラインが破損します。CAPTCHAで保護されたサイトからのドキュメンテーションをインデックス化するRAGエージェントや、複数のウェブソースをクエリするリサーチエージェントは、検証をクリアしない限り進行できません。
この問題は特にLlamaIndexのデータコネクタエコシステムにおいて深刻です。繰り返しアクセスされるウェブベースのコネクタは、インデックス作成用のページを取得する際にCAPTCHAに遭遇します。解決ツールがない場合、エージェントはソースをスキップする(データが不完全)か、完全に失敗する(パイプラインが破損)しかありません。
CapSolverのツール統合はLlamaIndexの標準的なパターンに従います:関数を定義し、それをFunctionToolとしてラップし、エージェントのツールリストに追加します。エージェントの推論エンジンは、タスクの文脈に基づいて解決を呼び出すタイミングを決定します。
開始する前に必要なもの
bash
# CapSolverパッケージ
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
# LlamaIndex
pip install llama-index llama-index-llms-openai
bash
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"
ステップ1 — CAPTCHA解決FunctionToolを作成する
python
import asyncio
from llama_index.core.tools import FunctionTool
from capsolver_agent.schema import create_executor
executor = create_executor(api_key="YOUR_CAPSOLVER_API_KEY")
def solve_captcha(captcha_type: str, website_url: str, website_key: str) -> str:
"""CAPTCHAチャレンジを解決し、検証トークンを返します。
ウェブリソースにアクセスする際には使用してください。
引数:
captcha_type: 'reCaptchaV2', 'reCaptchaV3', または 'cloudflare'
website_url: CAPTCHAで保護されたページの完全なURL
website_key: サイトキー(data-sitekey属性の値)
戻り値:
解決されたトークン文字列またはエラーメッセージ
"""
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']}"
return f"失敗: {result['error']}"
# LlamaIndexのFunctionToolとしてラップ
captcha_tool = FunctionTool.from_defaults(
fn=solve_captcha,
name="solve_captcha",
description="保護されたウェブページ上のreCAPTCHA v2/v3、Cloudflare TurnstileのCAPTCHAチャレンジを解決"
)
ステップ2 — CAPTCHA機能を持つLlamaIndexエージェントを構築する
python
from llama_index.core.agent import ReActAgent
from llama_index.llms.openai import OpenAI
# LLMを作成
llm = OpenAI(model="gpt-4o", temperature=0)
# CAPTCHA解決ツールを持つエージェントを作成
agent = ReActAgent.from_tools(
tools=[captcha_tool],
llm=llm,
verbose=True
)
# エージェントを実行
response = agent.chat(
"https://example.com/dataにアクセスする必要があります。これはreCAPTCHA v2で保護されています。"
"サイトキーは6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhIです。解決してトークンを教えてください。"
)
print(response)
ステップ3 — LlamaIndexデータコネクタに統合する
データをインジェストするエージェントの場合、CAPTCHA解決とデータロードを組み合わせます:
python
from llama_index.core import VectorStoreIndex, Document
def fetch_protected_page(url: str, site_key: str) -> str:
"""最初に検証を解決してから、CAPTCHAで保護されたページを取得します。"""
# CAPTCHAを解決
token = solve_captcha("reCaptchaV2", url, site_key)
if "Failed" in token:
return ""
# トークンを使用してページにアクセス
import requests
response = requests.post(url, data={"g-recaptcha-response": token.split("Token: ")[1]})
return response.text
# 保護されたデータインジェスト用のカスタムツールを作成
protected_fetch_tool = FunctionTool.from_defaults(
fn=fetch_protected_page,
name="fetch_protected_page",
description="最初に検証を解決してから、CAPTCHAで保護されたウェブページのコンテンツを取得"
)
# 解決と取得機能を持つエージェント
data_agent = ReActAgent.from_tools(
tools=[captcha_tool, protected_fetch_tool],
llm=llm,
verbose=True
)
ステップ4 — プロダクションパターン
python
def solve_captcha_with_retry(captcha_type: str, website_url: str, website_key: str, max_retries: int = 3) -> str:
"""失敗時に再試行を行うプロダクショングレードのCAPTCHA解決。"""
for attempt in range(max_retries):
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 < max_retries - 1:
import time
time.sleep(3)
return f"{max_retries}回の試行後に失敗: {result.get('error')}"
# 再試行機能付きのプロダクションツール
production_captcha_tool = FunctionTool.from_defaults(
fn=solve_captcha_with_retry,
name="solve_captcha",
description="エラー時に自動的に再試行するCAPTCHA解決"
)
| CAPTCHAタイプ | パラメータ | 解決時間 | 1,000件あたりのコスト |
|---|---|---|---|
| reCAPTCHA v2 | reCaptchaV2 |
5-12秒 | $2-3 |
| reCAPTCHA v3 | reCaptchaV3 |
3-8秒 | $1-2 |
| Cloudflare Turnstile | cloudflare |
2-5秒 | $1-2 |
ボーナーコードを取得してください: CapSolverダッシュボードでコード WEBS を使用すると、すべてのチャージに対して追加の5%のボーナスを取得できます。
CapSolver APIドキュメンテーションは追加パラメータをカバーしています。CAPTCHAタイプの識別には、CapSolver拡張機能を使用してください。CapSolverウェブスクレイピングガイドは、LlamaIndexデータコネクタに適用可能なデータ収集パターンをカバーしています。
結論
LlamaIndexエージェントにCAPTCHA解決を統合するには、CapSolverのエクセキュータをFunctionToolにラップし、ReActエージェントのツールリストに追加する必要があります。エージェントの推論ループはタスクの文脈に基づいて解決を呼び出すタイミングを決定します。CapSolverは、統一されたAPIを通じてreCAPTCHAとCloudflare Turnstileを処理する解決インフラストラクチャを提供し、LlamaIndexデータパイプラインを中断することなく運用し続けます。
FAQ
CapSolverはLlamaIndexの非同期エージェントと動作しますか?
はい。capsolver-agentエクセキュータは完全に非同期です。LlamaIndexの非同期エージェントを使用する場合は、asyncio.run()でラップする代わりにawait executor.execute()を直接使用してください。
LlamaIndexのウェブリーダーコネクタと併用できますか?
はい。CAPTCHA解決ツールをカスタムウェブリーダーと組み合わせて、ページコンテンツを取得する前に検証を処理できます。エージェントは最初にCAPTCHAを解決し、その後トークンをウェブリーダーに渡して認証アクセスを行います。
LlamaIndexエージェントが未知のCAPTCHAタイプに遭遇した場合どうなりますか?
get_supported_captchasツールはサポートされているタイプのリストを返します。エージェントがサポートされていないタイプに遭遇した場合、明確なエラーメッセージを受け取り、ユーザーに報告するか、静かに失敗する代わりにユーザーに通知できます。
LlamaIndexとcapsolver-mcpを使用する場合と比べてどうなりますか?
capsolver-mcpはMCPクライアント(Claude Desktop、Cursor)向けです。コードで実行されるLlamaIndexエージェントの場合、capsolver-agentとFunctionToolを使用してください — これにより、LlamaIndexフレームワーク内で直接的なプログラマティックコントロールが得られます。
コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。
もっと見る

TinyFish AgentQLを使ってCAPTCHAを解決する方法 – CapSolverを使用したステップバイステップガイド
CapSolverをTinyFish AgentQLに統合する方法を学び、reCAPTCHAやCloudflare TurnstileなどのCAPTCHAを自動的に解決する方法を学びましょう。PythonとJavaScript SDKの例を含むステップバイステップのチュートリアルで、シームレスなAI駆動のウェブ自動化を実現します。

Sora Fujimoto
05-Aug-2026

LlamaIndexエージェントにおけるCAPTCHAの解決方法
CAPTCHAの解決をLlamaIndexエージェントにFunctionToolとCapSolverを使用してウェブデータのインジェストパイプラインに統合する。

Sora Fujimoto
31-Jul-2026

MCPを使用したCAPTCHAの解き方: キャプソルバー モデル コンテキスト プロトコル サービス
Claude Desktop、Cursor、および任意のMCPクライアントでゼロコードでCAPTCHAを解くためのCapSolver MCPサービスを設定してください。

Sora Fujimoto
31-Jul-2026

reCAPTCHA v3をOpenAIエージェントSDKで解く方法
OpenAI Agents SDKで、CapSolverのfunction_toolを使用して、高スコアのreCAPTCHA v3トークンを生成します。

Sora Fujimoto
30-Jul-2026

Cloudflare Turnstile の解決方法: CrewAI エージェントでの
CrewAIのマルチエージェントワークフローにCloudflare Turnstileの解決を統合し、CapSolverを用いて行います。

Sora Fujimoto
30-Jul-2026

CAPTCHAを解決する方法: AutoGenエージェント
Microsoft AutoGenのマルチエージェント会話にCAPTCHAの解決を統合する完全なガイド – register_functionとグループチャットのパターンを使用してCapSolverで

Sora Fujimoto
29-Jul-2026

