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

劇作家 + スクレイピング不要のブラウザ:CDP上のクラウドクロミウム

Ava Wilson
Ava Wilson

Expert in Web Scraping Technologies

05-Aug-2026

プレイwrightはブラウザを操作します。Scrapeless Scraping Browserは、すでにクラウドに存在し、Chrome DevTools Protocolを話し、住宅用の出口を持つブラウザを提供します。あなたのconnect_over_cdpコールは、インストールやパッチ適用を必要とせず、目立たないように保つ必要があるChromeではなく、wss://browser.scrapeless.com/api/v2/browser上の実際のChromiumセッションに到達します。

この一つの交換 - ローカルの起動がリモート接続に変わること - が全体の統合です。あなたがすでに知っているPlaywrightスクリプトはそのままです。変わるのはブラウザがどこで実行されるかと、どのIPから出ていくかです。このガイドでは、Python PlaywrightをScrapeless Scraping Browserに接続し、JavaScriptページをレンダリングし、その中から構造化データを読み取り、特定の国にリクエストをピン留めし、すべてのコードパスがライブエンドポイントに対して実行されます。

なぜPlaywrightにScrapeless Scraping Browserを選ぶのか

Scraping Browserは、CDPを介してアクセスするクラウドのChromiumセッションであり、Playwrightはこれを自ら起動したブラウザとまったく同じように扱います。ダウンロードするローカルのChromeは必要なく、偽装するためのヘッドレスフラグもなく、あなたのマシン上でメモリを競合させるブラウザプロセスもありません。接続すると、Browserオブジェクトが得られ、完全なPlaywright APIがそれに対して機能します。

スクレイピングに重要な三つの特性があります。そのセッションは、JavaScriptをサーバー側でレンダリングするため、クライアントスクリプトだけで構築されたページは、すでにDOMが埋め込まれた状態で到着します。この接続は、特定の国にピン留めされた住宅用の出口を持つため、コンテンツを地理的に制限したページは、あなたがリクエストした地域からのトラフィックを見ることができます。また、ブラウザがリモートであるため、スクリプトを実行するマシンにはGPUやディスプレイ、パッチ適用されたChromiumビルドは必要ありません - ローカルの部分は、Chrome DevTools Protocolを話すウェブソケットクライアントだけです。

前提条件

Python 3.9以降、playwrightパッケージ、およびScrapeless APIキーが必要です。無料プランでapp.scrapeless.comからキーを取得します; ダッシュボードのAPIキーのページに表示されます。キーは接続URLのtokenクエリパラメータとして移動するため、ソースにリテラルとしてではなく、環境変数に保持してください。

ローカルのブラウザバイナリは必要ありません。connect_over_cdpは、すでにクラウドに存在するブラウザに対してウェブソケットを開くため、通常のplaywright install chromiumステップはここではオプションです - レンダリングはScrapelessの接続側で行われます。

インストール

Playwrightクライアントをプロジェクトにインストールします:

bash Copy
pip install playwright

コードやログに表示されないように環境にキーを設定します:

bash Copy
export SCRAPELESS_API_KEY="your_scrapeless_api_key"

Playwrightをクラウドブラウザに接続する

ウェブソケットURLを構築し、それをconnect_over_cdpに渡します。エンドポイントはwss://browser.scrapeless.com/api/v2/browserで、三つのクエリパラメータを読み取ります:あなたのキーのためのtoken、ブラウザがどれくらいの間生存するかを秒単位で指定するためのsessionTTL、および出口地域のためのproxyCountryです。ウェブソケットトランスポート自体はWebSocketプロトコルに従い、Playwrightのブラウザタイプ接続APIはそれを介してCDPを話します:

python Copy
import os
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright

API_KEY = os.environ["SCRAPELESS_API_KEY"]

def scraping_browser_url(proxy_country="US", session_ttl=180):
    params = urlencode({
        "token": API_KEY,
        "sessionTTL": session_ttl,
        "proxyCountry": proxy_country,
    })
    return f"wss://browser.scrapeless.com/api/v2/browser?{params}"

sessionTTLは、単一のブラウザが生存する期間を制限します; 短い値は一ページには適していますが、長いものはマルチステップフローを通じてブラウザを温かく保ちます。proxyCountryは二文字のコードを受け取ります。それ以外は通常のPlaywrightです。

JavaScriptページをレンダリングして抽出する

接続されたブラウザをクライアントでコンテンツを構築するページに向けると、ナビゲーションが収束する際にはすでにレンダリングされたDOMが存在します。以下のデモページは空のコンテナを発送し、それをJavaScriptで埋めます; プレーンなHTTPフェッチはゼロ行を返しますが、クラウドブラウザはスクリプトを最初に実行したため、すべての10行を返します - あなたがクエリするDOMは、HTMLの解析およびスクリプトモデルが実行後に生成したものです。

python Copy
import os
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright

API_KEY = os.environ["SCRAPELESS_API_KEY"]

def scraping_browser_url(proxy_country="US", session_ttl=180):
    params = urlencode({"token": API_KEY, "sessionTTL": session_ttl, "proxyCountry": proxy_country})
    return f"wss://browser.scrapeless.com/api/v2/browser?{params}"

with sync_playwright() as p:
ブラウザ = p.chromium.connect_over_cdp(scraping_browser_url())
    ページ = ブラウザ.new_page()
    ページ.goto("https://quotes.toscrape.com/js/", wait_until="networkidle")
    名言 = ページ.query_selector_all(".quote")
    print("JSレンダリングされたページの名言ブロック:", len(名言))
    print("最初の著者:", 名言[0].query_selector(".author").inner_text())
    ブラウザ.close()

実行すると、カウントと最初のレコードが印刷されます:

text Copy
JSレンダリングされたページの名言ブロック: 10
最初の著者: アルバート・アインシュタイン

wait_until="networkidle"の選択は、コンテンツがスクリプト駆動のリクエストのバーストを通じて到着するページに適しています。決して静かにならない分析重視のページでは、domcontentloadedに切り替え、気にしているセレクタの明示的な待機を追加してください。そうすれば、常にアイドルにならないネットワークを待って実行がハングすることはありません。

無料プランであなたのAPIキーを取得してください: app.scrapeless.com

国に出る出口を固定する

1つのパラメータを変更すれば、リクエストは異なる国から出て行きます。proxyCountryコードは居住地域を選択し、サイトが見るIPと、地理的制限のあるページに対して提供するコンテンツを決定します。2つの地域からIPエコーエンドポイントを読み取ると、スクリプトが移動しない間に出口アドレスが変わる様子がわかります。

python Copy
import os, json
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright

API_KEY = os.environ["SCRAPELESS_API_KEY"]

def scraping_browser_url(country):
    return "wss://browser.scrapeless.com/api/v2/browser?" + urlencode(
        {"token": API_KEY, "sessionTTL": 180, "proxyCountry": country})

with sync_playwright() as p:
    for country in ("US", "GB"):
        ブラウザ = p.chromium.connect_over_cdp(scraping_browser_url(country))
        ページ = ブラウザ.new_page()
        ページ.goto("https://api.ipify.org?format=json", wait_until="domcontentloaded")
        ip = json.loads(ページ.inner_text("pre, body"))["ip"]
        print(f"proxyCountry={country} -> クラウド出口IP {ip}")
        ブラウザ.close()

2つの接続は2つの異なるアドレスから退出し、どちらもあなたのマシンのものではありません。

text Copy
proxyCountry=US -> クラウド出口IP 24.93.178.230
proxyCountry=GB -> クラウド出口IP 109.149.20.197

これは、ローカルのPlaywrightの実行との実際的な違いです: ブラウザとその出口IPはどちらもScrapeless側にあるため、レートリミットと地理的ルールはピン留めされた地域に付属し、ワークステーションには付属しません。

セッションと共に作業する

接続以降はすべて標準のPlaywrightです。保持するオブジェクトは通常のBrowserです。page.screenshot()はクラウドのChromiumがレンダリングしたものをキャプチャし、page.click()page.fill()はフォームを操作し、page.evaluate()はページコンテキストでJavaScriptを実行します。単一の接続で複数のページを開くことができ、ブラウザを閉じるとリモートセッションが終了します。長いsessionTTLを設定し、閉じずに切断した場合、時間が切れるとセッションは自動的に期限切れになります。

サイトの定めた境界内で自動化を行ってください。ターゲットの利用規約やロボット排除プロトコルファイルを読み、公開ページのみをリクエストし、同時実行性を控えめに保ってください。クラウドでページをレンダリングすることは、サイトが収集を許可する内容を変えません。発見と抽出パターンの広範なガイドについては、スクレイピングのためのウェブスクレイパーをゼロから構築するを参照してください。

結論

PlaywrightをScrapeless Scraping Browserに接続することで、スクリプトを保持し、実行環境を交換します。gotoquery_selector_allscreenshotを書き続けることができます; それらを実行するブラウザは、国ごとにピン留めできる居住型の出口を持つクラウドのChromiumセッションです。上記の2つの実行 — JavaScriptページからの10の名言、2つの地域からの2つの出口IP — は、全体の契約です: サーバー側でレンダリングし、通常通り抽出し、トラフィックがどこから出るかを制御します。現在の機能については、Scraping Browser製品ページを読み、料金ページであなたのボリュームに対するセッションと出口の制限を確認してください。

無料プランを請求し、ブラウザ自動化を構築している他の開発者と意見を交換するために私たちのコミュニティに参加しください: Discord · Telegram

FAQ

Q: Scrapeless Scraping Browserを使用するためにChromeをインストールしたり、playwright installを実行する必要がありますか?
いいえ。ブラウザはScrapelessのクラウドで実行されるため、connect_over_cdpplaywrightクライアントパッケージだけが必要です。ローカルブラウザのダウンロードは、自分のマシンでブラウザを起動する場合にのみ重要です。

Q: どのPlaywrightバインディングが接続できますか?

接続-over-CDPメソッドを公開している任意のPlaywrightバインディングが機能します。これはエンドポイントがChrome DevToolsプロトコルを使用しているためです。ここにある例ではPythonのsync_playwrightを使用しており、同じURLは非同期APIやNodeバインディングにも適しています。

Q: 特定の国からリクエストを送信するにはどうすればよいですか?

接続URLにあるproxyCountryクエリパラメータを2文字の国コードに設定します。接続はその地域の住宅出口から出るため、地理的に制限されたページはその内容を使用します。

Q: これはローカルでPlaywrightを実行するのとどう違いますか?

ローカル実行では、あなたのマシン上でChromeが起動し、あなたのIPから出ます。Scraping Browserはクラウド内でChromiumを住宅出口を使用して実行するため、ローカルブラウザを完全にスキップし、クエリパラメータを通じて出口の地域を制御します。

Q: ブラウザセッションはどれくらいの時間開いたままですか?

sessionTTLパラメータが秒単位での寿命を設定します。ブラウザを閉じるとセッションは即座に終了します。閉じずに切断した場合、TTLが経過すると自動的にセッションが終了します。

Q: スクリーンショットを撮ったり、フォームに記入したりできますか?それともDOMを読むだけですか?

完全なPlaywright APIが利用可能です。接続されたオブジェクトは通常のBrowserであるため、page.screenshot()page.click()page.fill()、およびpage.evaluate()はローカルと同様に動作します。

Q: JavaScriptページに対してどの待機戦略を使用すべきですか?

リクエストの短いバーストでコンテンツが到着するページにはnetworkidleを使用し、バックグラウンド接続を保持するページではdomcontentloadedに加えて既知のセレクタの明示的な待機を使用します。2番目のパターンは、決して静かにならないネットワークで待機しないようにします。

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

最も人気のある記事

カタログ