PythonでCloudflareを解決する方法(Playwright + Scrapeless)
Expert Network Defense Engineer
TL;DR:
- Cloudflareは訪問者ではなくブラウザをスコアリングします。 フィンガープリントの一貫性、行動シグナル、出口IPを読み取り、信頼するブラウザには
cf_clearanceクッキーを設定します。したがって、Pythonでこれを解決するということは、パズルを解くのではなく、信頼されるブラウザであることを意味します。 - ローカルのPythonブラウザは、このスコアリングにおいて3つの軸で失敗します:
navigator.webdriverのフラグ、ヘッドレスデフォルトのフィンガープリント、データセンター出口IP。これら3つすべてを手動でパッチすることは、メンテナンスの反復作業です。 - Scrapeless Scraping Browserは、レンダリング中にその課題をクリアします — 自身で開発したChromiumを使用し、一貫性のあるセッションごとのフィンガープリントと、195カ国以上での居住地出口を持ち、1つのWebSocketエンドポイントを介して接続されています。
- あなたのPythonは標準のPlaywrightのままです。
chromium.connect_over_cdp()で接続し、課題後のコンテンツを待ってページを読み取ります — 唯一の変更は接続URLです。 - 検証済みのライブ: クラウドブラウザを介したPython PlaywrightセッションがCloudflareのチャレンジページをクリアし、成功マーカー
You bypassed the Cloudflare challenge! :Dを読み取り、cf_clearanceクッキーを受け取りました。 - 無料で開始可能。 新しいScrapelessアカウントには、無料のScraping Browserランタイムが含まれています — app.scrapeless.comでサインアップしてください。
はじめに:PythonでCloudflareを解決するのはブラウザの問題
Cloudflareの課題は、解読する画像CAPTCHAではありません。これはバックグラウンドで実行され、ページを読み込んだブラウザをスコアリングします — フィンガープリントが内部で一貫しているか、インタラクションシグナルが人間らしく見えるか、出口IPがクリーンな評価を持っているかどうかです。スコアがクリアされると、Cloudflareはcf_clearanceクッキーを設定し、実際のページが読み込まれます。そうでない場合、中身のないインタースティシャルが表示されます。
これにより、Pythonのタスクが再編成されます。提出する回答はありません — 作業は、Cloudflareがすでに信頼しているブラウザを提示することです。Pythonから操作されるローカルのヘッドレスChromiumはできません:それはnavigator.webdriverプロパティを通じて自動化を発表し、ヘッドレスデフォルトのフォントとキャンバスの挙動を持ち、IPの評価サービスがすでに知っているIPから退出します。これらをすべてパッチして、その後Chromiumと検知者が移動するたびにパッチを維持することができます。このガイドは短い道を取ります:標準のPlaywrightからScrapeless Scraping Browserを操作し、フィンガープリント、行動、出口IPをサーバー側で処理し、通常のレンダリング中に課題がクリアされます。
Cloudflareが実際にチェックするもの
Cloudflareのドキュメントは、訪問者を中断することなく実行される検証ステップを説明しています。実際には、3つのことを評価し、cf_clearanceクッキーを付与します — それがクリアされると標準のHTTPクッキーとなります:
| Cloudflareが読み取るもの | ローカルPythonブラウザが失敗する理由 |
|---|---|
| フィンガープリントの一貫性 | ヘッドレスデフォルトとwebdriverフラグが実際のChromeと矛盾する |
| 行動シグナル | 一貫性のないブラウザ表面を持つスクリプト化されたタイミング |
| 出口IPの評価 | データセンターIPは居住地IPよりも悪くスコアがつく |
一貫性のある信頼されたブラウザが、どの単独の回避策よりも重要です — だからこそ、すべてをサーバー側に移動することは、ステルスパッチを重ねるよりも持続可能です。
なぜScrapeless Scraping Browserか
Scrapeless Scraping Browserは、ウェブクロールやAIエージェントのために設計されたカスタマイズ可能な対検出クラウドブラウザです。特にCloudflare向けに、次のような特長があります:
- 実自社開発のChromium — チャレンジのJavaScriptをChromeとまったく同じように実行し、滞留せずに解決します。
- 一貫したセッションごとのフィンガープリント —
navigator.webdriverフラグはなく、ヘッドレスデフォルトが漏れません。 - 195カ国以上での居住地出口 — Cloudflareは出口IPをスコアリングし、居住地域がクリーンに評価される一方で、データセンターIPはそうではありません。
- セッションの持続性 —
cf_clearanceの許可が同じセッション内でのリクエスト間で再利用できます。 - 1つの接続面 — すべてのオプションは、同じWebSocketエンドポイント上のクエリパラメータです。
無料プランでAPIキーを取得するには、app.scrapeless.comにアクセスしてください。
前提条件
- Python 3.10以降
- Python用のPlaywright(
pip install playwright) - ScrapelessアカウントとAPIキー — app.scrapeless.comでサインアップしてください。
完全な接続詳細は、Scraping Browser ドキュメント にあります。
インストール
リモートブラウザに接続するため、このフローではローカルのChromiumを playwright install する必要はありません。
bash
pip install playwright
export SCRAPELESS_API_KEY=your_api_token_here # 無料キーは https://app.scrapeless.com にあります
接続し、チャレンジをクリアする
エンドポイントを構築し、chromium.connect_over_cdp() で接続し、ナビゲートして、ポストチャレンジコンテンツが追加されるのを待ちます。チャレンジはレンダリング中に解決されます - 別途解決呼び出しはありません。
python
import json
import os
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright
params = {"token": os.environ["SCRAPELESS_API_KEY"], "sessionTTL": "180", "proxyCountry": "US"}
endpoint = f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"
TARGET = "https://www.scrapingcourse.com/cloudflare-challenge"
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(endpoint)
page = browser.new_page()
page.goto(TARGET, wait_until="domcontentloaded", timeout=90000)
# クラウドブラウザがレンダリング中にCloudflareをクリアします; 本当のコンテンツを待つ。
page.wait_for_selector("#challenge-title", timeout=90000)
print("クリアされた:", page.inner_text("#challenge-title"))
cookies = page.context.cookies()
print("cf_clearance:", any(c["name"] == "cf_clearance" for c in cookies))
browser.close()
このスクリプトのライブ実行は、クリアされた: You bypassed the Cloudflare challenge! :D と cf_clearance: True を表示しました - 標準のPython用Playwrightで、クラウドブラウザを通じて提供されています。
無料プランのAPIキーを取得する: app.scrapeless.com
パスを確認し、クリアランスを保持する
信頼できるシグナルは、本当のコンテンツが追加されることです - ポストチャレンジ要素が存在する場合、ページはクリアされました。Cloudflareは合格セッションに cf_clearance クッキーを設定し、同じセッション内の他のリクエストにクリアランスを持ち越すために読むことができます。
python
cookies = page.context.cookies()
clearance = next((c for c in cookies if c["name"] == "cf_clearance"), None)
print("cf_clearanceが存在する:", clearance is not None)
if clearance:
print("ドメイン:", clearance["domain"])
信頼できるクリアのために地域を固定する
Cloudflareは出口IPを評価するため、proxyCountry を居住地域に固定します。任意のISO国コードに変更してください。
python
params = {
"token": os.environ["SCRAPELESS_API_KEY"],
"sessionTTL": "180",
"proxyCountry": "US", # または "DE", "JP", "ANY"
}
ローカルPythonブラウザが止まる場所
ローカルのPlaywrightまたはリクエストベースのスクレイパーは、Cloudflareがブラウザを評価し始めるまで問題なく動作します。その後、ヘッドレスフィンガープリンター、webdriver フラグ、およびデータセンターIPがそれぞれ異なるチェックに失敗し、インタースティシャルがコンテンツを置き換えます。それらはフィンガープリンティング、行動、およびIPの問題であり、クラウドブラウザはサーバー側で対処します。Scrapelessに接続すると、あなたのPlaywrightコードが標準的なままで、管理されたセッションにそれらを引き渡します。
返されるもの
セッションは、従来のPython用Playwrightセッションのように振る舞います - page.goto、page.wait_for_selector、page.content()、およびクッキーがすべて機能します。クラウドブラウザでCloudflareをクリアする際のいくつかの正直な観察:
navigator.webdriverが存在しないため、Cloudflareが実行する最初のチェックは本物のChromeのように見えます。- 出口IPは
proxyCountryと一致します - 居住地域はデータセンターIPよりもずっと信頼性高くクリアします。 - 合格後に
cf_clearanceが存在します - 前のリクエストに渡すために同じセッションを再利用します。 - 頑固なページのためにセッションをウォームアップする - 保護されたページの前に同じセッションでサイトのホームページを最初にロードし、行動表面が通常の訪問者のように見えるようにします。
結論: Cloudflareをクリアし、Pythonを維持する
CloudflareをPythonで解決することは、チャレンジを解読することではなく、Cloudflareが信頼するブラウザを提示することです。Scrapeless Scraping Browserは、スコアを付ける3つの要素(フィンガープリント、動作、エグジットIP)をサーバー側で処理するため、あなたのPlaywright for Pythonのコードは接続URLのみを変更します。proxyCountryを住宅地域に固定し、チャレンジ後のコンテンツを待ち、cf_clearanceを読み取って合格を確認します。別のPythonライブラリで同じクラウドブラウザを実行する方法については、Scraplingプロダクションスクレイパーガイドを参照し、Scrapeless料金ページでプランを比較してください。
Cloudflareクリアリングパイプラインを構築する準備はできていますか?
無料プランを取得し、Cloudflare保護サイトをスクレイピングする開発者とつながるためにコミュニティに参加してください:Discord · Telegram。
app.scrapeless.comにサインアップして、無料のScraping Browserランタイムを入手し、Cloudflareをレンダリング中にクリアするクラウドブラウザを指すPlaywright for Pythonを設定してください。
FAQ
Q: 別のCAPTCHA解決サービスが必要ですか?
合格したブラウザでは必要ありません。Cloudflareは主にバックグラウンドでフィンガープリント、動作、IPをスコアリングし、cf_clearanceクッキーを発行します。クラウドブラウザは、通常のレンダリング中にそのスコアリングをパスするために構築されているため、別のパズルステップを接続する必要はありません。
Q: プロキシが必要ですか?
いいえ。住宅の出口は組み込まれています — proxyCountryを地域またはANYに設定してください。CloudflareはエグジットIPをスコアリングするため、住宅地域はデータセンターのアドレスよりも信頼性高くクリアします。
Q: まだ一部のページにチャレンジが表示されます — 何が助けになりますか?
proxyCountryを住宅地域に固定し、保護されたページの前に同じセッションでサイトのホームページを最初に読み込むことでセッションを暖かくし、行動の表面が通常の訪問のように読まれるようにしてください。
Q: 既存のPlaywrightコードは互換性がありますか?
はい。Scraping BrowserはCDPに対応しているため、chromium.connect_over_cdp()は変更なしで機能します — 接続URLのみを変更します。
Q: Cloudflareをクリアすることは合法ですか?
公開されているデータにアクセスすることは一般的に許可されていますが、ルールは管轄区域やサイトによって異なります。対象の利用規約を確認し、ロボット指令を尊重し、敏感なことについては弁護士に相談してください。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



