CAPSOLVER
ブログ
Crawl4AIにおけるreCAPTCHA v2の解決方法とCapSolver統合

Crawl4AIにおけるreCAPTCHA v2の解決方法とCapSolver統合

Logo of CapSolver

Sora Fujimoto

AI Solutions Architect

21-Oct-2025

「I'm not a robot」のチェックボックスは、ウェブサイト上のボットトラフィックや自動化された悪用を防ぐ重要な防御メカニズムです。セキュリティにとって不可欠ですが、正当なウェブスクラピングやデータ抽出操作においては、大きな課題となることがあります。ウェブオートメーションに依存する開発者や企業にとって、効率的で自動化されたCAPTCHA解決ソリューションの必要性は非常に重要です。

この記事では、Crawl4AI(高度なウェブクローラー)とCapSolver(CAPTCHA解決サービスのリーディングプロバイダー)の強力な統合について詳しく説明します。特にreCAPTCHA v2の解決に焦点を当て、APIベースとブラウザ拡張機能ベースの統合方法を紹介し、コード例と説明を提供して、シームレスで中断のないウェブデータ収集を実現する方法をお伝えします。

reCAPTCHA v2とその課題の理解

reCAPTCHA v2は、ユーザーがチェックボックスをクリックし、場合によっては画像チャレンジを完了することで、人間であることを証明する必要があります。自動化システムであるウェブクローラーにとっては、このインタラクティブな要素がスクラピングプロセスを停止させ、手動の介入や複雑な回避技術を必要とします。効果的な解決策がない場合、データ収集は非効率的で不安定、そして高コストになります。

CapSolverは、高度なAIアルゴリズムを活用して、reCAPTCHA v2の高精度で高速な解決を提供します。Crawl4AIと統合することで、大きな障壁がシームレスで自動化されたステップに変わり、ウェブオートメーションのタスクがスムーズで生産的になります。

💡 Crawl4AI統合ユーザー向けの限定ボーナス:
この統合を祝して、このチュートリアルを通じて登録したすべてのCapSolverユーザーに、6%のボーナスコード — CRAWL4 を提供しています。
ダッシュボードで再充電時にコードを入力すると、即座に6%のクレジットが追加されます

インテグレーション方法1: Crawl4AIとのCapSolver APIインテグレーション

APIインテグレーション方法は、細かい制御を提供し、柔軟性と正確性の観点から一般的に推奨されます。これは、Crawl4AIのjs_code機能を使用して、CapSolverから取得したCAPTCHAトークンをターゲットウェブページに直接挿入することを含みます。

仕組み:

  1. CAPTCHAページに移動: Crawl4AIは通常通りターゲットウェブページにアクセスします。
  2. トークンを取得: Pythonスクリプトで、siteKeywebsiteURLなどの必要なパラメータを渡してCapSolverのAPIを呼び出し、gRecaptchaResponseトークンを取得します。
  3. トークンを挿入: CrawlerRunConfig内のCrawl4AIのjs_codeパラメータを使用して、ページ上のg-recaptcha-responseテキストエリア要素に取得したトークンを挿入します。
  4. 操作を継続: トークンの挿入に成功した後、Crawl4AIはフォーム送信やクリックなどの後続の操作を実行でき、reCAPTCHAを効果的にバイパスします。

例: reCAPTCHA v2のAPIインテグレーション

以下のPythonコードは、CapSolverのAPIをCrawl4AIに統合してreCAPTCHA v2を解決する方法を示しています。この例はreCAPTCHA v2のチェックボックスデモページをターゲットにしています。

python Copy
import asyncio
import capsolver
from crawl4ai import *


# TODO: あなたの設定を入力してください
api_key = "CAP-xxxxxxxxxxxxxxxxxxxxx"                                      # CapSolverのAPIキー
site_key = "6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9"                      # ターゲットサイトのサイトキー
site_url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"  # ターゲットサイトのページURL
captcha_type = "ReCaptchaV2TaskProxyLess"                                  # ターゲットCAPTCHAのタイプ
capsolver.api_key = api_key


async def main():
    browser_config = BrowserConfig(
        verbose=True,
        headless=False,
        use_persistent_context=True,
    )

    async with AsyncWebCrawler(config=browser_config) as crawler:
        await crawler.arun(
            url=site_url,
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test"
        )

        # CapSolver SDKを使用してreCAPTCHAトークンを取得
        solution = capsolver.solve({
            "type": captcha_type,
            "websiteURL": site_url,
            "websiteKey": site_key,
        })
        token = solution["gRecaptchaResponse"]
        print("reCAPTCHAトークン:", token)

        js_code = """
            const textarea = document.getElementById(\'g-recaptcha-response\');
            if (textarea) {
                textarea.value = \"""" + token + """\";
                document.querySelector(\'button.form-field[type="submit"]\').click();
            }
        """

        wait_condition = """() => {
            const items = document.querySelectorAll(\'h2\');
            return items.length > 1;
        }"""

        run_config = CrawlerRunConfig(
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test",
            js_code=js_code,
            js_only=True,
            wait_for=f"js:{wait_condition}"
        )

        result_next = await crawler.arun(
            url=site_url,
            config=run_config,
        )
        print(result_next.markdown)


if __name__ == "__main__":
    asyncio.run(main())

コード分析:

  1. CapSolver SDK呼び出し: capsolver.solveメソッドは、ReCaptchaV2TaskProxyLessタイプ、websiteURLwebsiteKeyを引数として呼び出され、gRecaptchaResponseトークンが取得されます。このトークンはCapSolverによって提供される解決策です。
  2. JavaScript挿入(js_code): js_code文字列には、ページ上のg-recaptcha-responseテキストエリア要素を検索し、取得したトークンをそのvalueプロパティに割り当てるJavaScriptが含まれています。その後、送信ボタンをシミュレートしてクリックし、フォームに有効なCAPTCHAトークンで送信します。
  3. wait_for条件: wait_conditionは、ページに特定の要素が表示されたことを示すために定義され、送信が成功し、ページが新しいコンテンツをロードしたことを確認するためにCrawl4AIが待機します。

インテグレーション方法2: CapSolverブラウザ拡張機能のインテグレーション

直接的なAPIインジェクションが複雑または望ましくないシナリオでは、CapSolverのブラウザ拡張機能が代替手段として機能します。この方法は、Crawl4AIが管理するブラウザコンテキスト内でCAPTCHAを自動的に検出および解決する拡張機能の能力を活用します。

仕組み:

  1. user_data_dirでブラウザを起動: Crawl4AIを設定して、指定されたuser_data_dirでブラウザインスタンスを起動します。
  2. 拡張機能のインストールと構成: 手動でこのブラウザプロファイルにCapSolver拡張機能をインストールし、CapSolverのAPIキーを構成します。拡張機能のconfig.jsファイルでapiKeymanualSolvingパラメータを事前に構成することもできます。
  3. CAPTCHAページに移動: Crawl4AIはreCAPTCHA v2を含むページに移動します。
  4. 自動または手動の解決: 拡張機能のmanualSolving構成に応じて、CAPTCHAはページロード時に自動的に解決されるか、インジェクトされたJavaScriptを介して手動でトリガーされます。
  5. 検証: 解決された後、トークンは拡張機能によって自動的に処理され、フォーム送信などの後続の操作は有効な検証を携えます。

例: reCAPTCHA v2の拡張機能インテグレーション(自動解決)

この例は、Crawl4AIがCapSolver拡張機能を備えたブラウザプロファイルを使用してreCAPTCHA v2を自動的に解決する方法を示しています。

python Copy
import asyncio
import time

from crawl4ai import *


# TODO: あなたの設定を入力してください
user_data_dir = "/browser-profile/Default1" # ここに正しいパスを設定し、構成済みの拡張機能が含まれていることを確認してください

browser_config = BrowserConfig(
    verbose=True,
    headless=False,
    user_data_dir=user_data_dir,
    use_persistent_context=True,
    proxy="http://127.0.0.1:13120", # 必要に応じてプロキシを構成
)

async def main():
    async with AsyncWebCrawler(config=browser_config) as crawler:
        result_initial = await crawler.arun(
            url="https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php",
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test"
        )

        # 拡張機能はページロード時にCAPTCHAを自動的に解決します。
        # CAPTCHAが解決されるまでに十分な時間を確保するため、必要に応じて待機条件またはtime.sleepを追加する必要があります。
        time.sleep(30) # 例としての待機時間、必要に応じて調整してください

        # CAPTCHAが解決された後、他のCrawl4AI操作を継続
        # たとえば、成功した送信後に表示される要素をチェック
        # print(result_initial.markdown) # ここに待機後のページコンテンツを確認できます


if __name__ == "__main__":
    asyncio.run(main())

コード分析:

  1. user_data_dir: このパラメータは、Crawl4AIがインストールされたCapSolver拡張機能とその構成を保持するブラウザインスタンスを起動するために不可欠です。このパスが有効なブラウザプロファイルディレクトリを指していることを確認してください。
  2. 自動解決: 拡張機能の構成でmanualSolvingfalse(デフォルト)に設定されている場合、拡張機能はページロード時にreCAPTCHA v2を自動的に検出および解決します。CAPTCHAが解決されるまでに十分な時間を確保するため、time.sleepがホルダーとして含まれています。

例: reCAPTCHA v2の拡張機能インテグレーション(手動解決)

スクラピングロジックの特定のポイントでCAPTCHA解決を手動でトリガーしたい場合は、拡張機能のmanualSolvingパラメータをtrueに設定し、拡張機能が提供する解決ボタンをクリックするjs_codeを使用できます。

python Copy
import asyncio
import time

from crawl4ai import *


# TODO: あなたの設定を入力してください
user_data_dir = "/browser-profile/Default1" # ここに正しいパスを設定し、構成済みの拡張機能が含まれていることを確認してください

browser_config = BrowserConfig(
    verbose=True,
    headless=False,
    user_data_dir=user_data_dir,
    use_persistent_context=True,
    proxy="http://127.0.0.1:13120", # 必要に応じてプロキシを構成
)

async def main():
    async with AsyncWebCrawler(config=browser_config) as crawler:
        result_initial = await crawler.arun(
            url="https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php",
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test"
        )

        # ページがロードされ、拡張機能が準備できるように少し待機
        time.sleep(6)

        # CapSolver拡張機能が提供する手動解決ボタンをクリックするjs_codeを使用
        js_code = """
            let solverButton = document.querySelector(\'#capsolver-solver-tip-button\');
            if (solverButton) {
                const clickEvent = new MouseEvent(\'click\', {
                    bubbles: true,
                    cancelable: true,
                    view: window
                });
                solverButton.dispatchEvent(clickEvent);
            }
        """
        print(js_code)
        run_config = CrawlerRunConfig(
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test",
            js_code=js_code,
            js_only=True,
        )
        result_next = await crawler.arun(
            url="https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php",
            config=run_config
        )
        print("JS実行結果:", result_next.js_execution_result)

        # 手動トリガー後のCAPTCHA解決に時間を許可
        time.sleep(30) # 例としての待機時間、必要に応じて調整してください

        # 他のCrawl4AI操作を継続


if __name__ == "__main__":
    asyncio.run(main())

コード分析:

  1. manualSolving: このコードを実行する前に、CapSolver拡張機能のconfig.jsmanualSolvingtrueに設定していることを確認してください。
  2. 解決のトリガー: js_codeは、#capsolver-solver-tip-button上のクリックイベントをシミュレートし、これはCapSolver拡張機能が提供する手動解決ボタンです。これにより、CAPTCHA解決プロセスの実行タイミングを正確に制御できます。

結論

Crawl4AIとCapSolverの統合は、reCAPTCHA v2をバイパスするための強力で柔軟なソリューションを提供し、ウェブスクラピング操作の効率と信頼性を大幅に向上させます。API統合の正確な制御またはブラウザ拡張機能統合の簡易なセットアップのどちらを選ぶかに関わらず、reCAPTCHA v2はあなたのデータ収集目標の障壁ではなくなります。

CAPTCHA解決を自動化することで、開発者は保護されたウェブサイトをシームレスにナビゲートできる自信を持って、価値あるデータを抽出に集中できます。Crawl4AIの高度なクローリング機能とCapSolverの強力なCAPTCHA解決技術の統合は、自動化されたウェブデータ抽出における重要な一歩です。

参考文献

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

もっと見る

リキャプチャ V2 を Python で 解決する
Pythonでリカプチャ v2を解く方法

本記事では、Pythonを使用してreCaptcha v2を解決する方法を紹介します。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

09-Dec-2025

JavaScriptでreCAPTCHAを解く: 完全なチュートリアル
JavaScriptでレカプチャを解く:完全なチュートリアル

reCAPTCHAはウェブコンテンツを効果的に保護していますが、研究やデータ分析、またはコンプライアンスに基づいた自動化タスクなど、ウェブサービスと相互作用する正当な活動を妨げる場合があります。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

02-Dec-2025

reCaptcha v3 EnterpriseをPythonで解く方法
reCAPTCHA v3 エンタープライズの解決方法 Pythonで

reCAPTCHA v3 Enterprise Pythonガイド:高スコア技術、プロキシオプション、CapSolverとの統合による安定した0.7~0.9の結果

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

02-Dec-2025

AIスクラビングワークフローにCAPTCHA解決を組み込む方法
AIスクリーピングワークフローにCAPTCHA解決を組み込む方法

CAPTCHA解決サービスをAIスクリーピングワークフローに統合する方法を習得してください。reCAPTCHA v3、Cloudflare、AWS WAFのベストプラクティスを学んで、信頼性の高い大量データ収集を確保してください

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

28-Nov-2025

reCaptcha v3をNode.JSで解決する方法
reCAPTCHA v3 を Node.JS で解決する方法

この記事では、Node.JS を使って reCaptcha v3 を解く方法を紹介します。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

28-Nov-2025

reCAPTCHA v3をPythonで解決する方法
reCAPTCHA v3 を Python で解決する方法

PythonとCapSolverを用いてGoogle reCAPTCHA v3を解く方法を学び、高いスコアを取得し、オートメーションワークフローに統合してください。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

28-Nov-2025