🎯 カスタマイズ可能で検出回避型のクラウドブラウザ。自社開発のChromiumを搭載し、ウェブクローラーAIエージェント向けに設計されています。👉今すぐ試す
ブログに戻ります

未検出指紋ブラウザ for Python: ブラウザの使用、Crawl4AI、Scrapling

Sophia Martinez
Sophia Martinez

Specialist in Anti-Bot Strategies

08-Jul-2026

TL;DR:

  • ローカルのヘッドレスブラウザは、自動化を3つの軸で同時に漏洩させます:ランタイム、フィンガープリント、出口IP。 navigator.webdrivertrue、フィンガープリントはヘッドレスのデフォルトを持ち、すべてのリクエストが自身のアドレスから出るため、アンチボットシステムはこの3つを全てスコアリングします。
  • Browser Use、Crawl4AI、ScraplingはすべてChrome DevToolsプロトコルを話すため、ローカルの代わりにリモートブラウザを操作できます。 各ツールは cdp_url(または browser_ws_endpoint)を受け入れ、Scrapelessにポイントすれば、オートメーションがサーバーサイドで実行されます。
  • Scrapeless Scraping Browserはアンチ検出のクラウドブラウザです:リアルなChromium、一貫したセッション毎のフィンガープリント、195以上の国での住宅出口。 webdriverのサインはなく、出口IPはクリーンで、維持すべきステルスパッチもありません。
  • 統合は各ツールにつき1行のコード — 接続URLです。 ブラウザの出処を変えるだけで、スクレイパーの書き方は変わりません。
  • 同じWebSocketエンドポイントがすべてのオプションをクエリパラメータとして運びますtokensessionTTLproxyCountryfingerprintprofileId — したがって、地理ターゲティングやプロファイル再利用はURLの変更で済むため、コードの書き換えは不要です。
  • 無料で始められます。 新しいScrapelessアカウントには無料のScraping Browserランタイムが含まれています — app.scrapeless.comでサインアップしてください。

イントロダクション:3つのPythonスクレイパー、1つの未検出のブラウザ

アンチボットシステムはもはや単一のシグナルだけを見ているわけではありません。現代の課題は、ブラウザのランタイム、提示するフィンガープリント、到着するネットワークパスを一度のパスでスコアリングします。ローカルのヘッドレスChromiumはこの3つすべてに失敗します:navigator.webdriverプロパティを使って自動化を宣言し、ヘッドレスのデフォルトフォントやキャンバスの挙動を持ち、データセンターや家庭のIPから出るため、レピュテーションサービスがすでに知っているものです。

Pythonにはブラウザを操作する3つの人気のある方法があります — Browser UseスタイルのLLMエージェント、Crawl4AIのクローラー、Scraplingのフェッチャー — それぞれ、ローカルで実行すると同じ3軸の問題を引き継ぎます。ローカルブラウザにステルスを実装するためには、Chromeのリリースやアンチボットのアップデートを手動で追う必要があります。

短い道があります。これらの3つのツールはすべてChrome DevToolsプロトコルを介してブラウザに接続し、CDPはそのブラウザがlocalhostにあるかクラウドにあるかを気にしません。このガイドは、各ツールをScrapeless Scraping Browserに接続し、ランタイム、フィンガープリント、出口IPをサーバーサイドで処理し、あなたのスクレイパーコードはそのままにします。


フィンガープリントを漏洩させるもの

ブラウザフィンガープリントは、ページがログインなしで読み取れる信号のセットです:ユーザーエージェント、WebDriverフラグ、キャンバスおよびWebGLレンダリング、インストールされているフォント、タイムゾーン、言語、画面メトリクスなどです。自動化フレームワークは、これらの信号を予測可能な方法でかき乱します — W3C WebDriver仕様は、準拠したドライバがnavigator.webdriverを設定することを要求しており、これはまさに検出スクリプトが最初に読む信号です。

これをローカルで修正するには、一貫して人間のように見えるように各信号をオーバーライドし、そのオーバーライドがChromiumや検出装置の変化に伴い最新の状態を保たなければなりません。これはクラウドブラウザが取り除くメンテナンストレッドミルです:Scrapelessはセッションごとに一貫したフィンガープリントを提示しますので、信号は互いに、またリアルなChromeプロファイルと一致します。

なぜScrapeless Scraping Browserなのか

Scrapeless Scraping Browserは、ウェブクローラーとAIエージェントのために設計されたカスタマイズ可能なアンチ検出のクラウドブラウザです。Chrome DevToolsプロトコルを使うため、CDP対応のPythonツールは変更なしで接続できます。このガイドの3つのツールにとって、以下の利点があります:

  • リアルな自己開発のChromiumがJavaScriptをChromeと同様に正確に実行し、シングルページアプリやチャレンジインタースティシャルを解決します。
  • 一貫したセッション毎のフィンガープリントnavigator.webdriverのサインなし、ヘッドレスデフォルトで漏洩することもありません。
  • 195以上の国での住宅出口、セッションごとに単一のproxyCountry値で選択可能です。
  • 再利用可能なプロファイルによるセッション持続性で、クッキーやログイン状態が実行をまたいで生き残ります。
  • 1つの接続インターフェース — すべての機能は同じWebSocketエンドポイントのクエリパラメータです。

無料プランでAPIキーを取得するにはapp.scrapeless.comにアクセスしてください。


前提条件

  • Python 3.11以上(Browser Useは3.11+が必要;Crawl4AIとScraplingは3.10+で実行)
  • ScrapelessアカウントとAPIキー — app.scrapeless.comでサインアップ
  • 接続したいツール: browser-use, crawl4ai, または scrapling
  • ターミナルと async Python に対する基本的な理解

以下のコードは、各ライブラリの現在のAPI(Browser(cdp_url=...)BrowserConfig(browser_mode="cdp", cdp_url=...)DynamicSession(cdp_url=...))に対して確認されています。エンドツーエンドで実行するには、ライブのScrapelessセッションが必要であり、Browser Useの例では言語モデルのためにOpenAI APIキーも必要です。各例を実行するには自分のキーを提供してください。

完全な接続詳細は、Scraping Browserのドキュメントにあります。


共有パターン: 1つのCDP URL

以下のすべての統合は同じ考えに基づいています。Scrapelessは、wss://browser.scrapeless.com/api/v2/browserでアクセス可能なCDPブラウザであり、そのオプションはクエリパラメータとして渡されます。このURLを1回構築し、ツールの接続引数に渡して、書かれている通りにスクレイパーを実行します。

python Copy
from urllib.parse import urlencode

params = {
    "token": "your_api_token_here",   # app.scrapeless.comから
    "sessionTTL": 900,                 # セッションが生存する秒数
    "proxyCountry": "ANY",             # または "US"、"DE"、"JP"のようなISOコード
}
cdp_url = f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"

パラメータはすべてのツールで一貫しています:

パラメータ 意味
token あなたのScrapeless APIキー(必要)
sessionTTL セッションの料金
sessionName セッションのラベル
proxyCountry ISO国コードまたは ANY
fingerprint URLエンコードされたJSONフィンガープリントオブジェクト
profileId 実行中に永続的なプロファイルを再利用

Browser Use: クリーンなブラウザ上のLLMエージェント

Browser Useは言語モデルでブラウザを操作します。そのBrowserオブジェクトはcdp_urlを受け入れるため、すべての変更はScrapeless URLを構築して渡すことだけです — Agent、そのタスク、LLMはそのままです。

注: この例はライブのScrapelessセッションとagent.run()用のOpenAI APIキーが必要です。両方提供して実行してください。

python Copy
import asyncio, os
from urllib.parse import urlencode
from dotenv import load_dotenv
from browser_use import Agent, Browser, ChatOpenAI

def scrapeless_browser() -> Browser:
    params = {
        "token": os.environ["SCRAPELESS_API_KEY"],
        "sessionTTL": 900,
        "proxyCountry": "ANY",
    }
    ws = f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"
    return Browser(cdp_url=ws)

async def main():
    load_dotenv()
    browser = scrapeless_browser()
    await browser.start()
    agent = Agent(
        task="Googleに行き、「Scrapeless」を検索し、最初の結果を開いてそのタイトルを返す",
        llm=ChatOpenAI(model="gpt-4o"),
        browser=browser,
    )
    print(await agent.run())
    await browser.kill()

asyncio.run(main())

エージェントは、クリーンなフィンガープリントと住宅用エグレスを持つクラウドブラウザに対して推論し、クリックします。Scrapelessダッシュボードからライブセッションを見ることができます。

無料プランでAPIキーを取得する: app.scrapeless.com

Crawl4AI: ブラウザモードをCDPに設定

Crawl4AIはネイティブCDPサポートを搭載しているため、追加のインストールは不要です。BrowserConfigbrowser_mode="cdp"を設定し、Scrapeless URLをcdp_urlとして渡します。Crawl4AIの統合はsessionTTLミリ秒で表現することに注意してください。

注: この例は実際のターゲットに対して実行するために、ライブのScrapelessセッションが必要です。APIキーを追加して実行してください。

python Copy
import asyncio
from urllib.parse import urlencode
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig

async def main():
    params = {
        "token": "your_api_token_here",
        "sessionName": "Proxy Demo",
        "sessionTTL": 1000,       # ミリ秒
        "proxyCountry": "ANY",
    }
    cdp_url = f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"

    async with AsyncWebCrawler(
        config=BrowserConfig(headless=False, browser_mode="cdp", cdp_url=cdp_url)
    ) as crawler:
        result = await crawler.arun(
            url="https://www.scrapeless.com/en",
            config=CrawlerRunConfig(wait_for="css:.content", scan_full_page=True),
        )
        print(f"ステータスコード: {result.status_code}")
        print(f"タイトル: {result.metadata['title']}")

asyncio.run(main())

カスタムフィンガープリントを送信するには、フィンガープリントオブジェクトをJSONエンコードし、URLエンコードして、fingerprintパラメータとして渡します — これにより、ブラウザはセッション全体でそのユーザーエージェント、プラットフォーム、画面、ローカリゼーションを一貫して提示します。

Scrapling: クラウドブラウザ上のDynamicSession

スクレイピングは、ブラウザセッションの上に迅速かつ適応型のパースを提供します。その DynamicSessioncdp_url を受け取り、スクレイピングの統合は sessionTTL秒の文字列として渡します。このセッションは、自動的にreCAPTCHA、Cloudflare Turnstile、およびAWS WAFの課題を処理し、レンダリングの一部として機能します。

注:この例を実行するには、ライブのScrapelessセッションが必要です。APIキーを追加して実行してください。

python Copy
import os
from urllib.parse import urlencode
from dotenv import load_dotenv
from scrapling.fetchers import DynamicSession

load_dotenv()
config = {
    "token": os.environ["SCRAPELESS_API_KEY"],
    "sessionName": "scrapling-session",
    "sessionTTL": "300",           # 秒、文字列として
    "proxyCountry": "ANY",
    "sessionRecording": "false",
}
ws = f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(config)}"

with DynamicSession(cdp_url=ws, disable_resources=True) as s:
    page = s.fetch("https://httpbin.org/headers", network_idle=True)
    print(f"コンテンツの長さ: {len(page.body)}")
    print(page.json())

スクレイピングはクリーンなブラウザでページをレンダリングし、スクレイピングはその戻りDOMを選択子で解析します。この作業の分担が重要です — スクレイピングの抽出APIを維持し、基盤となるブラウザだけを交換します。


返されるもの

すべてのツール間で、重要な点での動作は同じです:

  • navigator.webdriver信号が存在しない — クラウドブラウザは自動化を発表せず、最初の検出チェックは実際のChromeのように読み取られます。
  • 出口IPがproxyCountryと一致する — 地理制限されたページや価格が、地元の訪問者が見るように解決されます; ANYを使用すると、スクレイピングが自動的に選択します。
  • JavaScriptが完全に実行される — クライアントレンダリングされたリストや課題の中間ページがDOMを読む前にアタッチされます。
  • sessionTTLの単位がツールによって異なる — クライアント用ブラウザとスクレイピングでは秒、Crawl4AIではミリ秒。ツール独自の慣習と一致させ、共有定数を使用しないでください。
  • フィールドが欠落している場合がある — 解析された値はnullableとして扱い、ページの構造や条件付きセクションはターゲットによって異なるためです。

結論:ツールを選び、ブラウザを保持する

3つのツールは異なる仕事をカバーしています — LLMエージェント、クローラー、適応型パーサー — しかし、一つのアンチ検出ブラウザを共有しています。どれを選んでも、統合は単一の接続URLです:wss://browser.scrapeless.com/api/v2/browsertokenとオプションで構築し、それをツールのcdp_urlに渡し、スクレイピングがランタイム、フィンガープリンティング、居住用出口を担当させます。

スクレイパーの出口パスの選択に関しては、VPSとプロキシの違いを参照し、スクレイピング料金ページでプランを比較してください。proxyCountryを居住地域に固定し、各ツールのsessionTTL単位を一致させ、欠落フィールドをnullableとして扱ってください。


未検出のスクレイピングパイプラインを構築する準備はできましたか?

私たちのコミュニティに参加して無料プランを取得し、Pythonのスクレイパーをクラウドブラウザに接続する開発者とつながりましょう:Discord · Telegram

app.scrapeless.comに無料のスクレイピングブラウザランタイムでサインアップし、ブラウザ用、Crawl4AI、またはスクレイピングをターゲットがフィンガープリンティングできないクラウドブラウザに接続してください。


よくある質問

Q: スクレイピングを使用するためにスクリプトを再記述する必要がありますか?
いいえ。3つのツールすべてがすでにCDPを介してブラウザに接続しています。接続先を変更するだけ — cdp_url または WebSocketエンドポイント — エージェント、クローラー、またはパーサーのコードはそのままにしておきます。

Q: ローカルのヘッドレスブラウザを実行しないのはなぜですか?
ローカルブラウザは自分のIP上で実行され、navigator.webdriverを通じて自動化を発表し、Chromiumやアンチボットシステムの変更に伴いメンテナンスパッチを維持する必要があります。クラウドブラウザは、一貫したフィンガープリンティングと居住用出口を提供し、手間がかかりません。

Q: 別のプロキシは必要ですか?
いいえ。居住用出口はセッションに組み込まれています — proxyCountryを地域またはANYに設定します。設定する別のプロキシはありません。

Q: sessionTTLは秒ですか、それともミリ秒ですか?
ツールの統合によります:ブラウザ用とスクレイピングでは秒(スクレイピングは文字列として渡します)、Crawl4AIではミリ秒。各ツールの独自の慣習を使用してください。

Q: CloudflareやCAPTCHAを処理しますか?
クラウドブラウザは、クリーンな居住用IPでのレンダリングの一部として一般的な課題タイプ — Cloudflareの中間ページ、Cloudflare Turnstile、reCAPTCHA、およびAWS WAF — を処理します。最良の結果を得るために、proxyCountryを居住地域に固定してください。

Q: 3つのツールのうち、どれを使用すべきですか?
LLM駆動エージェントが自分のステップを決定するためのブラウザ使用、構造化クローリングとコンテンツ抽出のためのCrawl4AI、取得したページの高速適応パースのためのScrapling。それらは同じScrapelessブラウザを共有しているため、接続アプローチを変更することなく切り替えることができます。

Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。

最も人気のある記事

カタログ