Crawl4AIを検出されないフィンガープリンツブラウザで実行する方法
Advanced Data Extraction Specialist
TL;DR:
- Crawl4AIはすでにChrome DevTools Protocolをサポートしているため、Scrapelessにポイントするのは2行の変更で済みます。
browser_mode="cdp"とcdp_urlをScrapelessのWebSocketエンドポイントに設定すれば、すべてのarun()クローリングはローカルのChromiumではなくクラウドブラウザで実行されます。 - ローカルのCrawl4AIブラウザは3つの軸で自動化を漏らします:
navigator.webdriverフラグ、ヘッドレスデフォルトのフィンガープリント、そしてあなた自身の出口IP。アンチボットシステムはこれら3つを一緒にスコアリングします。 - Scrapeless Scraping Browserはすべてのサーバー側でこれら3つに対応します — 実際の自己開発されたChromium、一貫したセッションごとのフィンガープリント(
webdriverの兆候なし)、および195か国以上での住宅用出入り口。 - クローラーのロジックは変更されません。 抽出戦略、
CrawlerRunConfig、チャンク処理、マークダウン出力はすべてローカルと全く同じように機能します。ブラウザのソースのみが移動します。 - 確認済み: Scrapelessクラウドブラウザ上でのCrawl4AIクローリングはHTTP 200を返し、クリーンなマークダウンが11,000文字以上得られました。また、別のチェックでは
navigator.webdriverが米国の住宅用IPでfalseとして読み取られました。 - 無料でスタート可能。 新しいScrapelessアカウントには無料のScraping Browserランタイムが含まれています — app.scrapeless.comでサインアップしてください。
イントロダクション:Crawl4AIにクリーンなブラウザを提供する
Crawl4AIはPlaywrightを通じてリアルなChromiumを駆動し、ページをLLM準拠のマークダウンに変換します。自分のマシン上のブラウザに対して実行すると、すべてのクローリングは自動化が明らかになる信号を引き継ぎます:それはthe navigator.webdriverプロパティを通じて自己主張し、ヘッドレスデフォルトのフォントとキャンバスの動作を生成し、既に評判サービスが認識しているIPから出て行きます。
これらすべてをローカルで修正することもできますが、Chromiumや検出器が動くにつれて修正し続ける必要があります。短い道があります。Crawl4AIは、cdp_url設定を通じてChrome DevTools Protocolを解釈する任意のブラウザに接続できます、そしてScrapeless Scraping Browserは1つのWebSocket URLを介して到達可能なCDPエンドポイントです。Crawl4AIをそれに向けると、フィンガープリント、動作サーフェス、出口IPはサーバー側に移動し — クローラーのコードはそのままに保たれます。
何ができるか
- アンチボット保護されたページをクローリングする — クラウドブラウザはレンダリング中にチャレンジをクリアするため、
arun()はコンテンツを返し、インタースティシャルではありません。 - クローリングをローカライズする —
proxyCountryを固定し、ページがその市場の訪問者の見方で解決されるようにします。 - 一貫したフィンガープリントを送信する —
fingerprintオブジェクトを渡し、ユーザーエージェント、プラットフォーム、画面、およびタイムゾーンが実行間で一貫性を持つようにします。 - ログイン状態を再利用する —
profileIdを持ち運び、クッキーやローカルストレージがクローリング間で持続します。 - ノートパソコンを超えてスケールする — セッションはクラウドで実行されるため、一度に複数のURLがローカルのChromiumに束縛されません。
- 抽出を変更しない — CSS/XPath戦略、LLM抽出、マークダウン生成は同一に機能します。
なぜScrapeless Scraping Browserなのか
Scrapeless Scraping Browserは、ウェブクローラーやAIエージェント向けに設計されたカスタマイズ可能な、アンチ検出のクラウドブラウザです。Crawl4AI向けには、以下の特徴があります:
- 実際の自己開発されたChromiumが、ページのJavaScriptをChromeと同様に正確に実行できるため、クライアントレンダリングされたコンテンツが
arun()がそれを読む前に付加されます。 - 一貫したセッションごとのフィンガープリント —
navigator.webdriverの兆候はなし、ヘッドレスデフォルトは漏れません。 - 195か国以上での住宅用出入り口、セッションごとに1つの
proxyCountry値で選択されます。 profileIdによるセッション持続性、認証されたクローリングはその状態を保持します。- 1つの接続面 — すべてのオプションが同じWebSocketエンドポイントでのクエリパラメータです。
無料プランでAPIキーを取得するには、app.scrapeless.comをご覧ください。
前提条件
- Python 3.10以降で
asyncioをサポート - Crawl4AIをインストール(
pip install crawl4ai) - ScrapelessアカウントとAPIトークン — app.scrapeless.comでサインアップしてください
以下の例は、ライブScrapelessセッションを対象に検証されています。完全な接続の詳細はCrawl4AI統合ドキュメントに記載されています。
インストール
Crawl4AIは独自のPlaywright/CDPサポートを提供しているため、統合には追加のブラウザパッケージは不要です。
bash
pip install crawl4ai python-dotenv
export SCRAPELESS_TOKEN=your_api_token_here # https://app.scrapeless.com で無料キーを取得
接続を構成する
Scrapelessエンドポイントはwss://browser.scrapeless.com/api/v2/browserであり、すべてのオプションはクエリパラメータです。一度URLを構築し、それをBrowserConfigに渡します。
python
import os
from urllib.parse import urlencode
def scrapeless_cdp_url() -> str:
params = {
"token": os.environ["SCRAPELESS_TOKEN"],
"sessionName": "Crawl4AI",
"sessionTTL": 180000, # ミリ秒
"proxyCountry": "US",
}
return f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"
クラウドブラウザによる基本的なクロール
browser_mode="cdp"を設定し、cdp_urlを渡します。他のすべて—クロールライフサイクル、CrawlerRunConfig、マークダウン結果—は標準のCrawl4AIです。
python
import asyncio
import os
from urllib.parse import urlencode
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig
def scrapeless_cdp_url() -> str:
params = {
"token": os.environ["SCRAPELESS_TOKEN"],
"sessionName": "Crawl4AI",
"sessionTTL": 180000, # ミリ秒
"proxyCountry": "US",
}
return f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"
async def main() -> None:
async with AsyncWebCrawler(
config=BrowserConfig(
headless=True,
browser_mode="cdp",
cdp_url=scrapeless_cdp_url(),
)
) as crawler:
result = await crawler.arun(
url="https://www.scrapeless.com/en",
config=CrawlerRunConfig(wait_for="css:body", scan_full_page=True),
)
print("status:", result.status_code)
print("title:", result.metadata.get("title"))
print("markdown chars:", len(result.markdown.raw_markdown))
asyncio.run(main())
このクロールのライブ実行では、status: 200、ページタイトルEffortless Web Scraping Toolkit - Scrapeless、そして11,000文字以上のクリーンなマークダウンが返されました — これはCrawl4AIがローカルで生成する結果オブジェクトと同じもので、クラウドブラウザを介して取得されました。
無料プランでAPIキーを取得してください: app.scrapeless.com
一貫したフィンガープリントを送信
fingerprintオブジェクトは、ブラウザの広告的アイデンティティを一貫性のあるものに保ちます — ユーザーエージェント、プラットフォーム、画面、言語、タイムゾーンがすべて一致し、これはアンチボットスコアリングが確認する内容です。JSONでエンコードし、さらにクエリパラメータとして渡します。 W3C WebDriver仕様には、準拠する自動化がwebdriverフラグを設定することが求められます; クラウドブラウザはこれを持たないため、一貫したフィンガープリントにはそれに反する兆候がありません。
python
import json
from urllib.parse import quote, urlencode
def fingerprint_cdp_url() -> str:
fingerprint = {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"platform": "Windows",
"screen": {"width": 1920, "height": 1080},
"localization": {"languages": ["en-US", "en"], "timezone": "America/New_York"},
}
params = {
"token": os.environ["SCRAPELESS_TOKEN"],
"sessionTTL": 180000,
"fingerprint": quote(json.dumps(fingerprint)),
}
return f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"
選択した地域を経由してクロールをルーティング
proxyCountryをISO国コードに設定して、住宅用出口を選択します; 検証中のIPエコーエンドポイントに対するチェックを行うと、出口のIPが米国の住宅アドレスであることが確認され、navigator.webdriverはfalseとして読み取られました。
python
params = {
"token": os.environ["SCRAPELESS_TOKEN"],
"sessionTTL": 180000,
"proxyCountry": "DE", # または "US", "JP", "ANY"
}
ローカルのChromiumが停止する場所
独自のChromiumでCrawl4AIを実行するのは、オープンで保護されていないページには問題ありません。フリクションは、ターゲットがブラウザをスコアリングする場所から始まります: クライアントレンダリングされたアプリがヘッドレスデフォルトにそのコンテンツを表示しない場合、データセンターIPで停止する挑戦的なインタースティシャル、または訪問を重ねた際に安定したアイデンティティを要求するログインウォールなど。それぞれがフィンガープリント、動作、またはIPの問題を引き起こします — ちょうどクラウドブラウザがサーバーサイドで処理する3つの問題です。ブラウザをScrapelessに移動することで、これらのケースは管理されたセッションに引き渡され、あなたのarun()呼び出しと抽出戦略は同じままになります。
返される結果
結果は標準のCrawl4AIオブジェクトです — status_code、metadata、markdown、links、media、および構成した任意の構造化抽出。クラウドブラウザを介して実行した際のいくつかの誠実な観察:
navigator.webdriverは存在しません、そのため、サイトが実行する最初のチェックはリアルなChromeのように読み取られます。- ここでの
sessionTTLはミリ秒単位です — Crawl4AIのCDPモードはその値をそのまま渡すため、180000は3分であり、180ではありません。 - 出口IPが
proxyCountryと一致します — 地理的に制限されたページは、ローカル訪問者が見るように解決されます。 wait_forは依然として準備を支配します — CSS条件(css:body、コンテンツセレクタ)を使用して、arun()がクライアントレンダリングが付属した後にページを読み込むようにします。
結論: 同じクローラー、クリーンなブラウザ
Crawl4AIは何を抽出するかを決定し、Scrapelessはブラウザがサイトにどのように見えるかを決定します。統合は二つの設定 — browser_mode="cdp" と cdp_url — であり、パイプラインの残りは変更されません。 proxyCountryを居住地域に固定し、一貫したfingerprintを渡し、認証済みのクロールにprofileIdを再利用します。別のPythonスクレイピングライブラリを同じクラウドブラウザに接続する方法については、Scraplingプロダクションスクレイパーガイドを参照し、Scrapeless価格ページでプランを比較してください。
AI駆動のクロールパイプラインを構築する準備はできましたか?
当社のコミュニティに参加して、無料プランを取得し、Crawl4AIパイプラインを構築している開発者とつながりましょう: Discord · Telegram。
app.scrapeless.com にサインアップして、無料のスクレイピングブラウザランタイムを利用し、Crawl4AIのcdp_urlをターゲットがフィンガープリンティングできないクラウドブラウザに向けてください。
FAQ
Q: Crawl4AIの抽出コードを変更する必要がありますか?
いいえ。ブラウザの作成方法を変更します — browser_mode="cdp"とcdp_url — そして、クローラーライフサイクル、CrawlerRunConfig、抽出戦略、マークダウン出力は全く同じです。
Q: なぜローカルのChromiumでCrawl4AIを実行しないのですか?
ローカルのChromiumはあなたのIPで実行され、navigator.webdriverを通じて自動化を知らせ、ステルスパッチを維持する必要があります。クラウドブラウザは、バンドルされた居住用出口と一貫したフィンガープリントを持つ管理されたセッションです — 同じクローラーAPIで、メンテナンスは不要です。
Q: プロキシは必要ですか?
いいえ。居住出口は組み込まれています — proxyCountryを地域またはANYに設定します。設定するプロキシはありません。
Q: sessionTTLは秒単位ですか、それともミリ秒単位ですか?
Crawl4AIのCDPモードでは、値はミリ秒として渡されるので、180000は3分を意味します。フルクロールをカバーするのに十分な長さに設定してください。
Q: Crawl4AIでのウェブスクレイピングは合法ですか?
公開されているデータへのアクセスは一般的に許可されていますが、ルールは管轄地域やサイトによって異なります。ターゲットのサービス利用規約を確認し、ロボット指令を尊重し、敏感な事項については弁護士に相談してください。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



