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

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

Logo of CapSolver

Sora Fujimoto

AI Solutions Architect

21-Oct-2025

はじめに

reCAPTCHA v3は、グーグルが提供する高度な非表示CAPTCHAであり、ユーザーの行動を分析してボット活動の可能性を示すスコアを割り当てます。reCAPTCHA v2とは異なり、通常はユーザーにインタラクティブなチャレンジを提示しません。これはユーザー体験を向上させる一方で、ウェブオートメーションやデータスクリーピングにおいて新たな複雑さをもたらします。従来のトークン挿入方法は、しばしば不十分であるか、簡単に上書きされる可能性があるためです。

この記事では、Crawl4AIという強力なウェブクローラーと、CapSolverというリーディングなCAPTCHA解決サービスを統合する方法について、reCAPTCHA v3を解決するための詳細なガイドを提供します。JavaScript fetchフックやブラウザ拡張機能の統合など、高度なテクニックを紹介し、reCAPTCHA v3で保護されたサイトからのデータ抽出をシームレスかつ信頼性高く行う方法を解説します。

reCAPTCHA v3とその独自の課題について

reCAPTCHA v3は、ユーザーの操作なしで各リクエストに対してスコア(0.0から1.0の間)を返します。スコアが0.0の場合はボット活動の可能性が高く、1.0の場合は人間のユーザーである可能性が高いと判断されます。ウェブサイトはこのスコアをもとに、アクションの許可、チャレンジの提示、リクエストのブロックを決定します。reCAPTCHA v3の非表示性により、以下のような特徴があります:

  • チャレンジが表示されない: ユーザーはチェックボックスや画像パズルを目にしません。
  • スコアベースの検証: リスクスコアに基づいて判断されます。
  • 動的トークン生成: トークンはfetchXMLHttpRequestリクエストを通じて動的に生成され、検証されます。
  • タイミングに敏感: トークンを早めに挿入すると上書きされる可能性があり、遅く挿入すると検証ステップを逃す可能性があります。

CapSolverの高度なAI機能は、高スコアの有効なreCAPTCHA v3トークンを取得するために不可欠です。Crawl4AIの強力なブラウザコントロールと組み合わせることで、開発者はこれらの課題を乗り越え、データストリームの途切れを防ぐことが可能です。

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

統合方法1: CapSolver API統合とCrawl4AIのfetchフッキング

reCAPTCHA v3をAPI統合で回避するには、v2よりも高度なアプローチが必要です。これは、非表示性と動的なトークン検証のためです。重要な戦略は、CapSolverからreCAPTCHA v3トークンを取得し、ブラウザ内でwindow.fetchメソッドをフックして、検証の瞬間にページ自体が生成したトークンではなく、CapSolverが提供したトークンを置き換えることです。

仕組み:

  1. 事前にトークンを取得: Crawl4AIがターゲットページに移動する前に、CapSolverのSDKを使ってAPIを呼び出してreCAPTCHA v3を解決します。これにより、有効なgRecaptchaResponseトークンと、高いスコアが得られます。
  2. 移動とJavaScriptの挿入: Crawl4AIがターゲットページに移動します。重要なのは、CrawlerRunConfigjs_codeを通じてJavaScriptコードを挿入することです。
  3. fetchリクエストのフッキング: 挿入されたJavaScriptはfetchリクエストをインターセプトします。reCAPTCHA v3の検証エンドポイント(例: /recaptcha-v3-verify.php)をターゲットにしたリクエストが検出されると、JavaScriptはリクエストを変更し、ページ自体が生成したトークンではなく、CapSolverが提供したトークンを含めます。
  4. 操作の継続: fetchリクエストが成功裏にフックされ、有効なトークンが送信されると、Crawl4AIは他のアクションを継続できます。reCAPTCHA v3の検証が成功するためです。

例: API統合によるreCAPTCHA v3(fetchフッキング)

以下は、CapSolverのAPIをCrawl4AIと統合してreCAPTCHA v3を解決する高度な技術を示すPythonコードです。この例ではreCAPTCHA v3のデモページを使用します。

python Copy
import asyncio
import capsolver
from crawl4ai import *


# TODO: あなたの設定を記入してください
api_key = "CAP-xxxxxxxxxxxxxxxxxxxxx"                                             # CapSolverのAPIキー
site_key = "6LdKlZEpAAAAAAOQjzC2v_d36tWxCl6dWsozdSy9"                             # ターゲットサイトのサイトキー
site_url = "https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php"   # ターゲットサイトのページURL
page_action = "examples/v3scores"                                                 # ターゲットサイトのページアクション
captcha_type = "ReCaptchaV3TaskProxyLess"                                         # ターゲットのCAPTCHAのタイプ
capsolver.api_key = api_key


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

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

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

        js_code = """
            const originalFetch = window.fetch;
            
            window.fetch = function(...args) {
              if (typeof args[0] === \'string\' && args[0].includes(\'/recaptcha-v3-verify.php\')) {
                const url = new URL(args[0], window.location.origin);
                url.searchParams.set(\'action\', \""" + token + """\");
                args[0] = url.toString();
                document.querySelector(\".token\").innerHTML = \"fetch(\\'/recaptcha-v3-verify.php?action=examples/v3scores&token="""+token+"""\')\";
                console.log(\'Fetch URL hooked:\', args[0]);
              }
              return originalFetch.apply(this, args);
            };
        """

        wait_condition = """() => {
            return document.querySelector(\".step3:not(.hidden)\");
        }"""

        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 solve呼び出し: capsolver.solveメソッドは、ReCaptchaV3TaskProxyLessタイプ、websiteURLwebsiteKey、そして重要なpageActionパラメータで呼び出されます。pageActionパラメータはreCAPTCHA v3において非常に重要で、ページ上のreCAPTCHAのコンテキストをCapSolverに理解させ、より正確なトークンを生成する助けになります。
  2. JavaScript fetchフック: js_codeはこの解決策の中心です。window.fetchを再定義します。/recaptcha-v3-verify.phpへのfetchリクエストが検出されると、スクリプトはURLを変更し、CapSolverから提供されたtokenactionパラメータに含め、元のfetchを実行します。これにより、サーバーはCapSolverから提供された高スコアのトークンを受け取ることになります。
  3. wait_for条件: wait_conditionは、特定の要素(.step3:not(.hidden))が表示されるのを待つためのものです。これはreCAPTCHA v3の検証プロセスが成功し、ページが進捗したことを示します。

統合方法2: CapSolverブラウザ拡張機能によるreCAPTCHA v3の統合

reCAPTCHA v3の場合、CapSolverブラウザ拡張機能を使用することで、統合プロセスが簡略化されます。特に、拡張機能の自動解決機能を活用する場合に有効です。この拡張機能は、ウェブサイトにアクセスした際に自動的にreCAPTCHA v3を検出および解決します。

仕組み:

  1. 永続的なブラウザコンテキストの設定: Crawl4AIをuser_data_dirを使用して設定し、インストールされたCapSolver拡張機能を保持するブラウザインスタンスを起動します。
  2. 拡張機能の設定: このブラウザプロファイルにCapSolver拡張機能をインストールし、APIキーを設定します。reCAPTCHA v3の場合、通常は自動的に解決するようにするため、manualSolvingfalse(またはデフォルト)に設定します。
  3. ターゲットページに移動: Crawl4AIがreCAPTCHA v3で保護されたウェブページに移動します。
  4. 自動解決: ブラウザコンテキスト内で実行されるCapSolver拡張機能は、reCAPTCHA v3を検出し、自動的に解決し、必要なタイミングでトークンを挿入します。これは通常、バックグラウンドでシームレスに実行されます。
  5. アクションの継続: reCAPTCHA v3が拡張機能によって解決されると、Crawl4AIはスクリーピングタスクを継続できます。ブラウザコンテキストには、以降のリクエストに必要な有効なトークンがすでに存在します。

例: 拡張機能統合によるreCAPTCHA v3(自動解決)

この例は、Crawl4AIをブラウザプロファイルにCapSolver拡張機能を設定した状態で使用する方法を示しています。重要なのは、user_data_dirに拡張機能が適切に設定されていることです。

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-v3-request-scores.php", # reCAPTCHA v3のデモURLを使用
            cache_mode=CacheMode.BYPASS,
            session_id="session_captcha_test"
        )

        # reCAPTCHA v3は通常、ページロード時に拡張機能によって自動的に解決されます。
        # 解決が完了するまでに必要な待機条件やtime.sleepを追加する必要があります。
        time.sleep(30) # 拡張機能が動作するための例としての待機時間、必要に応じて調整してください

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


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

コード分析:

  1. user_data_dir: reCAPTCHA v2の拡張機能統合と同様に、このパラメータはCrawl4AIが事前にインストールおよび構成されたCapSolver拡張機能を持つブラウザプロファイルを使用するための鍵となります。この拡張機能は後でreCAPTCHA v3の解決を自動的に行います。
  2. 自動解決: CapSolver拡張機能は、reCAPTCHA v3チャレンジを自動的に検出および解決するように設計されています。拡張機能がバックグラウンドで動作する時間を確保するために、time.sleepが含まれています。より堅牢な解決策には、成功したreCAPTCHA v3解決を示す特定のページ変化をチェックするCrawl4AIのwait_for機能を使用することを検討してください。

結論

reCAPTCHA v3のウェブスクリーピングにおける解決には、その非表示性と動的な検証メカニズムを考慮して高度なアプローチが必要です。Crawl4AIとCapSolverの統合により、これらの課題を乗り越えるための強力なツールが提供されます。JavaScript fetchフックによるAPI統合の正確な制御や、ブラウザ拡張機能によるスムーズな自動化を通じて、開発者はウェブスクリーピングの効率と途切れのない動作を確保できます。

CapSolverの高精度なreCAPTCHA v3解決機能とCrawl4AIの高度なブラウザコントロールを活用することで、この高度なCAPTCHAで保護されたウェブサイトからのデータ抽出の成功確率を高く保つことができます。この連携により、開発者はより堅牢で信頼性の高い自動ウェブデータ収集システムを構築できます。

参照

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

もっと見る

Selenium [Python]を用いたreCaptcha v2の解決方法とCapsolver拡張機能の使用方法
reCAPTCHA V2をSelenium [Python]とCapSolver拡張機能を用いて解決する方法

Selenium PythonとCapsolver Extensionを使用してreCAPTCHA v2をスムーズに解く方法を学び、キャプチャの解決方法を効果的に設定および自動化するための詳細なガイド

reCAPTCHA
Logo of CapSolver

Adélia Cruz

05-Nov-2025

Capsolver拡張機能 - reCaptchaをブラウザで解決する
CapSolver拡張機能 - reCAPTCHAをブラウザで解決する

reCaptcha v2 / v3 / invisible / enterprise を、任意のウェブページで手間なく解決するための Capsolverキャプチャソルバーエクステンションを使用してください。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

27-Oct-2025

ウェブクローラー CAPTCHA ソルバー
ウェブスクリーピングにおいてreCAPTCHAを解決する方法

PythonとCapsolverを使用してウェブスクリーピングでreCAPTCHA v2およびv3を解決する方法を学びましょう。ステップバイステップのガイド、プロキシのオプション、およびシームレスな自動化のためのコード例。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

24-Oct-2025

AI駆動のSEO自動化:Captchaを突破してよりスマートなSERPデータ収集の方法
AIで駆動されるSEOオートメーション:キャプチャを解くためのスマートなSERPデータ収集

AIを活用したSEOオートメーションがCAPTCHAの課題を克服する方法を発見し、よりスマートなSERPデータ収集について学び、reCAPTCHA v2/v3の解決策を理解する

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

23-Oct-2025

reCAPTCHA v2 ガイド
reCAPTCHA v2を解決する方法: reCAPTCHA v2解決ガイド

Google reCAPTCHA v2を自動化して解決する方法を学びましょう。APIやSDKの統合、ステップバイステップのガイド、およびウェブスクリーピング、自動化、開発プロジェクトにおけるキャプチャ解決を効率化するためのボーナスコードについて学びましょう。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

22-Oct-2025

Recaptcha ソルバー
reCAPTCHA ソルバー 自動認識と解決方法

高度なAIとOCR技術を使用して、Google reCAPTCHA v2、v3、非表示、およびエンタープライズのチャレンジを自動で認識・解決する方法を学ぶ

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

22-Oct-2025