Crawl4AIにおけるreCAPTCHA v3の解決方法と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の非表示性により、以下のような特徴があります:
- チャレンジが表示されない: ユーザーはチェックボックスや画像パズルを目にしません。
- スコアベースの検証: リスクスコアに基づいて判断されます。
- 動的トークン生成: トークンは
fetchやXMLHttpRequestリクエストを通じて動的に生成され、検証されます。 - タイミングに敏感: トークンを早めに挿入すると上書きされる可能性があり、遅く挿入すると検証ステップを逃す可能性があります。
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が提供したトークンを置き換えることです。
仕組み:
- 事前にトークンを取得: Crawl4AIがターゲットページに移動する前に、CapSolverのSDKを使ってAPIを呼び出してreCAPTCHA v3を解決します。これにより、有効な
gRecaptchaResponseトークンと、高いスコアが得られます。 - 移動とJavaScriptの挿入: Crawl4AIがターゲットページに移動します。重要なのは、
CrawlerRunConfigのjs_codeを通じてJavaScriptコードを挿入することです。 - fetchリクエストのフッキング: 挿入されたJavaScriptは
fetchリクエストをインターセプトします。reCAPTCHA v3の検証エンドポイント(例:/recaptcha-v3-verify.php)をターゲットにしたリクエストが検出されると、JavaScriptはリクエストを変更し、ページ自体が生成したトークンではなく、CapSolverが提供したトークンを含めます。 - 操作の継続: fetchリクエストが成功裏にフックされ、有効なトークンが送信されると、Crawl4AIは他のアクションを継続できます。reCAPTCHA v3の検証が成功するためです。
例: API統合によるreCAPTCHA v3(fetchフッキング)
以下は、CapSolverのAPIをCrawl4AIと統合してreCAPTCHA v3を解決する高度な技術を示すPythonコードです。この例ではreCAPTCHA v3のデモページを使用します。
python
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())
コード分析:
- CapSolver
solve呼び出し:capsolver.solveメソッドは、ReCaptchaV3TaskProxyLessタイプ、websiteURL、websiteKey、そして重要なpageActionパラメータで呼び出されます。pageActionパラメータはreCAPTCHA v3において非常に重要で、ページ上のreCAPTCHAのコンテキストをCapSolverに理解させ、より正確なトークンを生成する助けになります。 - JavaScript
fetchフック:js_codeはこの解決策の中心です。window.fetchを再定義します。/recaptcha-v3-verify.phpへのfetchリクエストが検出されると、スクリプトはURLを変更し、CapSolverから提供されたtokenをactionパラメータに含め、元のfetchを実行します。これにより、サーバーはCapSolverから提供された高スコアのトークンを受け取ることになります。 wait_for条件:wait_conditionは、特定の要素(.step3:not(.hidden))が表示されるのを待つためのものです。これはreCAPTCHA v3の検証プロセスが成功し、ページが進捗したことを示します。
統合方法2: CapSolverブラウザ拡張機能によるreCAPTCHA v3の統合
reCAPTCHA v3の場合、CapSolverブラウザ拡張機能を使用することで、統合プロセスが簡略化されます。特に、拡張機能の自動解決機能を活用する場合に有効です。この拡張機能は、ウェブサイトにアクセスした際に自動的にreCAPTCHA v3を検出および解決します。
仕組み:
- 永続的なブラウザコンテキストの設定: Crawl4AIを
user_data_dirを使用して設定し、インストールされたCapSolver拡張機能を保持するブラウザインスタンスを起動します。 - 拡張機能の設定: このブラウザプロファイルにCapSolver拡張機能をインストールし、APIキーを設定します。reCAPTCHA v3の場合、通常は自動的に解決するようにするため、
manualSolvingはfalse(またはデフォルト)に設定します。 - ターゲットページに移動: Crawl4AIがreCAPTCHA v3で保護されたウェブページに移動します。
- 自動解決: ブラウザコンテキスト内で実行されるCapSolver拡張機能は、reCAPTCHA v3を検出し、自動的に解決し、必要なタイミングでトークンを挿入します。これは通常、バックグラウンドでシームレスに実行されます。
- アクションの継続: reCAPTCHA v3が拡張機能によって解決されると、Crawl4AIはスクリーピングタスクを継続できます。ブラウザコンテキストには、以降のリクエストに必要な有効なトークンがすでに存在します。
例: 拡張機能統合によるreCAPTCHA v3(自動解決)
この例は、Crawl4AIをブラウザプロファイルにCapSolver拡張機能を設定した状態で使用する方法を示しています。重要なのは、user_data_dirに拡張機能が適切に設定されていることです。
python
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())
コード分析:
user_data_dir: reCAPTCHA v2の拡張機能統合と同様に、このパラメータはCrawl4AIが事前にインストールおよび構成されたCapSolver拡張機能を持つブラウザプロファイルを使用するための鍵となります。この拡張機能は後でreCAPTCHA v3の解決を自動的に行います。- 自動解決: 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%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。
もっと見る

reCAPTCHAとは何ですか? reCAPTCHAの例やデモはどこにありますか?
この記事は、reCAPTCHAの包括的な概要、その一般的なタイプ、および動作を理解するためのライブデモを提供しています。また、CapSolverを使用してreCAPTCHA v2を効率的に解決する方法を示しています。これにより、自動化と開発ワークフローが向上し、ウェブサイトのセキュリティが維持されます。

Nikolai Smirnov
15-Dec-2025

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

Sora Fujimoto
09-Dec-2025

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

Sora Fujimoto
02-Dec-2025

reCAPTCHA v3 エンタープライズの解決方法 Pythonで
reCAPTCHA v3 Enterprise Pythonガイド:高スコア技術、プロキシオプション、CapSolverとの統合による安定した0.7~0.9の結果

Sora Fujimoto
02-Dec-2025

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

Sora Fujimoto
28-Nov-2025

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

Sora Fujimoto
28-Nov-2025


