CAPSOLVER
ブログ
reCAPTCHAをLangChainで解決する方法

LangChain での reCAPTCHA の解決方法

Logo of CapSolver

Sora Fujimoto

AI Solutions Architect

08-Jul-2026

reCAPTCHAは、ウェブをブラウジングする際によく遭遇する検証チャレンジです。LangChainエージェントがデータ収集、フォーム送信、マルチステップワークフローを実行する際、ログインページ、検索結果、保護されたコンテンツでreCAPTCHA v2のチェックボックスや非表示のチャレンジに遭遇します。このチュートリアルでは、CapSolverのcapsolver-agentパッケージを使用してLangChainでreCAPTCHA v2を解決する方法を具体的に説明し、トークンモードとブラウザモードの完全なコード例を提供します。

TL;DR

  • reCAPTCHA v2は、LangChainウェブエージェントが最もよく遭遇するCAPTCHAタイプです
  • CapSolverのLangChainツールは、reCAPTCHA v2(チェックボックスおよび非表示)を平均5〜12秒で解決します
  • トークンモードでは、サイトキーとURLのみが必要でブラウザは不要です
  • ブラウザモードは、任意のページでreCAPTCHAを自動検出し、トークンをDOMに自動的に埋め込みます
  • capsolver-agentパッケージは、LangChainのReActエージェント用のネイティブなBaseTool実装を提供します

reCAPTCHAがLangChainエージェントをブロックする理由

reCAPTCHA v2は、数百万のウェブサイトで自動トラフィックと人間ユーザーを区別するために導入されています。LangChainエージェントが保護されたページにナビゲートするとき、リードの拡張、データ抽出、ワークフローの自動化のためにGoogleのリスク分析エンジンがセッションを評価します。自動ブラウザ、ヘッドレス環境、高速なナビゲーションパターンはreCAPTCHAチャレンジをトリガーし、エージェントの実行を停止します。

チャレンジは2つの形式で現れます:「I'm not a robot」の可視チェックボックスと、リスクスコアに基づいて静かにトリガーされる非表示バージョンです。どちらの形式でも、進むには有効なトークンの送信が必要です。解決メカニズムがない場合、LangChainエージェントはタスクを継続できず、全体のチェーンが失敗します。

GoogleのreCAPTCHAドキュメントは、ブラウザ環境のチェック、インタラクションパターン、および歴史的な行動を含む高度なリスク分析を使用していることを確認しています。これは、人間のようなブラウジングパターンを持たない自動エージェントにとって特に困難です。

CapSolverのAI駆動の解決サービスは、クラウドインフラストラクチャを通じて有効なトークンを生成することで、エージェントのコンテキスト内でピクセル単位のインタラクションや画像認識の必要性を回避します。

開始する前に必要なもの

必要なパッケージをインストールします:

bash Copy
# コアエンジン(必須の依存関係)
pip install git+https://github.com/capsolver-ai/capsolver-core.git

# LangChainサポート付きエージェントツール
pip install "capsolver-agent[langchain] @ git+https://github.com/capsolver-ai/capsolver-agent.git"

# LangChainランタイム
pip install langchain-openai langgraph

環境変数を設定します:

bash Copy
export CAPSOLVER_API_KEY="your-capsolver-api-key"
export OPENAI_API_KEY="your-openai-api-key"

また、ターゲットページからのreCAPTCHAサイトキーが必要です。CapSolverブラウザ拡張機能を使用して確認するか、ページソースのdata-sitekey属性を検査してください。reCAPTCHAの識別ガイドでは、v2チェックボックス、v2非表示、v3バージョンの区別の仕方を説明しています。

ステップ1 — ターゲットページでreCAPTCHA v2パラメータを特定する

行うべきこと

ターゲットページのreCAPTCHAサイトキーを確認してください。ブラウザの開発者ツールを開き、ページソースを検索します:

html Copy
<!-- 可視reCAPTCHA v2(チェックボックス) -->
<div class="g-recaptcha" data-sitekey="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"></div>

<!-- 非表示reCAPTCHA v2 -->
<div class="g-recaptcha" data-sitekey="6LeIxAcT..." data-size="invisible"></div>

3つの値を記録してください: data-sitekey、完全なページURL、およびそれが表示されるか非表示か(data-size="invisible"をチェックしてください)。

CapSolver SDKを使用してプログラム的に検出するには:

python Copy
from capsolver_core import create_capsolver
from playwright.async_api import async_playwright

async def detect_recaptcha(url: str):
    cap = create_capsolver(api_key="YOUR_API_KEY")
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto(url)
        
        # ページ上のすべてのCAPTCHAsを自動検出
        infos = await cap.get_captcha_info(page)
        for info in infos:
            print(f"Type: {info.type}, Key: {info.website_key}")
        
        await browser.close()
    await cap.aclose()

なぜ重要なのか

サイトキーはreCAPTCHA解決の基本パラメータです。これがないと、解決サービスは特定のサイト用の有効なトークンを生成できません。同じドメイン内の異なるページでは異なるサイトキーを使用する可能性があるため、常にページごとに確認してください。

避けるべき一般的なミス

  • 本番環境でテストキーを使用する: Googleはテストキー(例: 6LeIxAcT...)を提供しており、常に通過します。実際のサイトでは、実際に解決が必要なユニークなキーを使用します。
  • v2とv3の混同: reCAPTCHA v3は別のタスクタイプを使用し、page_actionが必要です。スクリプトのソースを確認してください - v3は?render=SITE_KEYではなくdiv要素から読み込まれます。

ステップ2 — LangChainツールでreCAPTCHA v2を解決する(トークンモード)

行うべきこと

capsolver-agent LangChainツールを使用して、エージェントのワークフロー内でreCAPTCHA v2を解決します:

python Copy
import asyncio
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from capsolver_agent.langchain import get_langchain_tools

async def solve_recaptcha_with_agent():
    # CapSolver LangChainツールを取得
    tools = get_langchain_tools(api_key="YOUR_CAPSOLVER_API_KEY")
    
    # ReActエージェントを作成
    llm = ChatOpenAI(model="gpt-4o", temperature=0)
    agent = create_react_agent(llm, tools=tools)
    
    # エージェントにreCAPTCHAを解決するよう依頼
    result = await agent.ainvoke({
        "messages": [("user", 
            "https://example.com/loginでreCAPTCHA v2を解決してください。"
            "サイトキーは6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhIです。"
            "フォームを送信できるトークンを返してください。"
        )]
    })
    
    print(result["messages"][-1].content)

asyncio.run(solve_recaptcha_with_agent())

エージェントループなしで直接実行する場合(プログラム的なコントロールが必要な場合):

python Copy
from capsolver_agent.schema import create_executor

async def solve_recaptcha_direct():
    executor = create_executor(api_key="YOUR_CAPSOLVER_API_KEY")
    
    result = await executor.execute("solve_captcha", {
        "captcha_type": "reCaptchaV2",
        "website_url": "https://example.com/login",
        "website_key": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"
    })
    
    if result["success"]:
        token = result["solution"]["token"]
        print(f"reCAPTCHAが解決しました!トークン: {token[:60]}...")
        # フォームPOSTでこのトークンを'g-recaptcha-response'として送信
        return token
    else:
        print(f"失敗: {result['error']}")
        return None

返されたトークンは、フォームPOSTリクエストのg-recaptcha-responseフィールドとして送信する必要があります。reCAPTCHA v2の解決ドキュメントでは、トークン送信パターンの追加情報が提供されています。

なぜ重要なのか

トークンモードはreCAPTCHA v2の最速アプローチです - ブラウザのオーバーヘッドなしで平均5〜12秒で解決できます。既にターゲットサイトのパラメータを知っているLangChainエージェントには、ブラウザインスタンスを起動することなく即座にCAPTCHAをクリアする方法を提供します。

避けるべき一般的なミス

  • トークンをすぐに送信しない: reCAPTCHAトークンは約120秒で期限切れになります。トークンを取得した後すぐにフォームを送信してください。
  • 非表示フラグを忘れる: 非表示reCAPTCHA v2の場合、解決アプローチは同じですが、挿入後にフォーム送信コールバックをトリガーする必要がある場合があります。

ステップ3 — 非表示reCAPTCHA v2を処理する

行うべきこと

非表示reCAPTCHA v2はAPIの観点から同じです - 同じreCaptchaV2タスクタイプが両方のバージョンを処理します:

python Copy
# 非表示reCAPTCHA v2 — 同じAPIコール
result = await executor.execute("solve_captcha", {
    "captcha_type": "reCaptchaV2",
    "website_url": "https://example.com/checkout",
    "website_key": "6Ld_SITE_KEY_HERE"
    # 他のフラグは必要ありません — CapSolverは自動的に非表示を処理します
})

違いはトークンの挿入方法です。非表示reCAPTCHAは通常、ボタンクリックまたはフォーム送信イベントにバインドされます。トークンを取得した後、コールバックをトリガーします:

python Copy
# 解決後のPlaywright/ブラウザコンテキストで
await page.evaluate(f"""() => {{
    document.getElementById('g-recaptcha-response').innerHTML = '{token}';
    // バインドされたコールバックをトリガー
    if (typeof ___grecaptcha_cfg !== 'undefined') {{
        const clients = ___grecaptcha_cfg.clients;
        for (const key in clients) {{
            const client = clients[key];
            // コールバックを検索して呼び出す
            if (client && client.L && client.L.L && client.L.L.callback) {{
                client.L.L.callback('{token}');
            }}
        }}
    }}
}}""")

reCAPTCHAコールバックの識別ガイドでは、任意のサイトで正しいコールバック関数を見つける方法が説明されています。

ステップ4 — 自動reCAPTCHA検出と解決用ブラウザモードを使用する

行うべきこと

LangChainエージェントがブラウザを駆動し、動的にreCAPTCHAに遭遇する場合、solve_on_page()を使用して自動検出と埋め込みを行います:

python Copy
import asyncio
from capsolver_core import create_capsolver
from playwright.async_api import async_playwright

async def auto_solve_recaptcha(target_url: str):
    """任意のページでreCAPTCHAを自動検出および解決します。"""
    cap = create_capsolver(api_key="YOUR_CAPSOLVER_API_KEY")
    
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        page = await browser.new_page()
        await page.goto(target_url)
        await page.wait_for_load_state("networkidle")
        
        # 1つの呼び出しだけですべてを処理: 検出 → 解決 → 埋め込み
        results = await cap.solve_on_page(page)
        
        for r in results:
            if r.solution:
                print(f"解決済み {r.info.type}: token={r.solution.token[:50]}...")
                print(f"トークンがページに埋め込まれました: {r.filled}")
            else:
                print(f"{r.info.type}の解決に失敗しました: {r.error}")
        
        # 解決後、ページは準備完了です — フォームを送信
        submit_button = page.locator('button[type="submit"]')
        if await submit_button.count() > 0:
            await submit_button.click()
            await page.wait_for_navigation()
            print(f"フォームが送信されました。現在のURL: {page.url}")
        
        await browser.close()
    await cap.aclose()

asyncio.run(auto_solve_recaptcha("https://example.com/login"))

ブラウザモードは特に強力で、ライブDOMからreCAPTCHAパラメータを直接読み込みます — 手動でのサイトキー抽出は必要ありません。SDKはCAPTCHAタイプを識別し、data-sitekeyを読み込み、解決し、g-recaptcha-responseテキストエリアにトークンを自動的に書き込みます。

ボーナスコードを取得してください: CapSolverダッシュボードでコードWEBSを使用すると、すべての充電で追加の5%ボーナスを獲得できます。LangChain開発者にとって理想的です。reCAPTCHAチャレンジを処理するエージェントを構築する際におすすめです。

ステップ5 — reCAPTCHA処理を含む本番用LangChainエージェントを構築する

行うべきこと

reCAPTCHA解決を他のツールと組み合わせて、完全な本番ワークフローを構築します:

python Copy
import asyncio
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from capsolver_agent.langchain import get_langchain_tools

async def production_agent():
    capsolver_tools = get_langchain_tools(api_key="YOUR_CAPSOLVER_API_KEY")
    llm = ChatOpenAI(model="gpt-4o", temperature=0)
    agent = create_react_agent(llm, tools=capsolver_tools)
    
    # reCAPTCHA解決を必要とするマルチステップタスク
    result = await agent.ainvoke({
        "messages": [("user",
            "保護されたリソースにアクセスする必要があります。"
            "まず、https://example.com/gateのreCAPTCHA v2を解決してください(サイトキー: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI),"
            "その後、私のリクエストを進めるためにトークンを教えてください。"
        )]
    })
    
    return result["messages"][-1].content

asyncio.run(production_agent())

複数のreCAPTCHAバージョンを異なるサイトで処理するエージェントの場合、同じツールはv2とv3の両方を処理します - captcha_typeパラメータをreCaptchaV2からreCaptchaV3に変更するだけです。

CapSolver製品ページでは、すべてのサポートされているCAPTCHAタイプとその料金がリストアップされており、LangChainエージェントの展開に必要なコストを推定するのに役立ちます。

結論

LangChainでreCAPTCHAを解決するには、LangChainのエクストラを含むcapsolver-agentパッケージが必要です。これは、ネイティブなBaseTool実装を提供します。トークンモードはブラウザなしで既知のサイトキーを5〜12秒で処理し、ブラウザモードは任意のページでreCAPTCHAトークンを自動検出および埋め込みます。CapSolverは、reCAPTCHA v2チェックボックスおよび非表示バージョンを統一されたインターフェースでサポートするAI解決インフラを提供します。

ターゲットページのサイトキーを確認し、get_langchain_tools()をReActエージェントに統合してください。エージェントの推論ループは自然にreCAPTCHA解決を呼び出すため、検証処理は自動化ワークフローの透明な一部になります。

FAQ

CapSolverでreCAPTCHA v2を解決する成功率はどのくらいですか?

CapSolverはreCAPTCHA v2チャレンジで95〜99%の成功率を達成しています。AI駆動の解決サービスはチェックボックスと非表示バージョンの両方を処理します。失敗した試行は料金が発生せず、構造化されたエラー応答によりエージェントが自動的に再試行できます。

reCAPTCHA v2を解決するにはどのくらい時間がかかりますか?

reCAPTCHA v2の平均解決時間は5〜12秒です。これはCapSolverのサービスへのネットワーク往復時間とAI認識プロセスを含みます。時間に敏感なワークフローでは、SDKはカスタマイズ可能なタイムアウトとポーリング間隔をサポートしています。

LangChainツールはreCAPTCHA Enterpriseを処理できますか?

はい。solve_captchaを呼び出す際にパラメータにenterprise: trueを指定してください。reCAPTCHA Enterpriseは同じv2/v3タスクタイプを使用しますが、sトークンなどの追加パラメータが必要な場合があります。CapSolverサービスはEnterpriseバージョンを透過的に処理します。

LangChainでreCAPTCHAを解決するにはブラウザが必要ですか?

No. トークンモードはブラウザを必要としません。サイトキーとURLを指定すると、トークンが返されます。ブラウザモード(Playwrightを必要とします)はオプションで、ライブページで自動検出と入力を行う場合に使用します。ほとんどのLangChainの統合では、シンプルさと速度のためトークンモードが使用されます。

reCAPTCHAトークンの有効期限切れをどう処理すればよいですか?

reCAPTCHAトークンは約120秒で有効期限が切れます。フォームの送信に近いタイミングでトークンを取得してください。解決と送信の間に遅延があるワークフローの場合、「送信直前に解決する」パターンを実装してください。パイプラインの初期段階で解決するのではなく、です。

コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。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