CAPSOLVER
ブログ
LlamaIndexエージェントでCAPTCHAを解決する方法

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

Logo of CapSolver

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 Copy
# 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 Copy
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"

ステップ1 — CAPTCHA解決FunctionToolを作成する

python Copy
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 Copy
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 Copy
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 Copy
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-agentFunctionToolを使用してください — これにより、LlamaIndexフレームワーク内で直接的なプログラマティックコントロールが得られます。

コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。

もっと見る

TinyFish AgentQでキャプチャを解く
TinyFish AgentQLを使ってCAPTCHAを解決する方法 – CapSolverを使用したステップバイステップガイド

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

ai
Logo of CapSolver

Sora Fujimoto

05-Aug-2026

ラマインデックスのエージェントでキャプチャをどうやって解決するか
LlamaIndexエージェントにおけるCAPTCHAの解決方法

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

ai
Logo of CapSolver

Sora Fujimoto

31-Jul-2026

CAPTCHAをMCP CapSolverサービスで解決する方法
MCPを使用したCAPTCHAの解き方: キャプソルバー モデル コンテキスト プロトコル サービス

Claude Desktop、Cursor、および任意のMCPクライアントでゼロコードでCAPTCHAを解くためのCapSolver MCPサービスを設定してください。

ai
Logo of CapSolver

Sora Fujimoto

31-Jul-2026

OpenAI Agents SDKにおけるreCAPTCHA v3の解き方
reCAPTCHA v3をOpenAIエージェントSDKで解く方法

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

ai
Logo of CapSolver

Sora Fujimoto

30-Jul-2026

クラウドフレアトゥルニスティールを解決する方法 クリューAIエージェントで
Cloudflare Turnstile の解決方法: CrewAI エージェントでの

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

ai
Logo of CapSolver

Sora Fujimoto

30-Jul-2026

CAPTCHAを解く方法: AutoGen AIエージェントでCapSolverを使う
CAPTCHAを解決する方法: AutoGenエージェント

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

ai
Logo of CapSolver

Sora Fujimoto

29-Jul-2026