February 19, 2026 · 14 min read · Playwright · Cloudflare · Anti-Bot Bypass

Playwright で Cloudflare を突破する 2026年版: 現役の3手法(失敗9手法)

結論(最終更新 2026年5月27日 — Cloudflare ML v9 / Web Bot Auth 時代):

12手法のテスト表へジャンプ · 生 JSON 結果をダウンロード · 動作する Playwright コード · FAQ

雲を通り抜けるブラウザ — Cloudflare 突破のイラスト

目次

  1. 2026年に Playwright がブロックされる理由(Cloudflare ML v9)
  2. Cloudflare が実際にチェックする3つの要素
  3. 2026年1〜5月に変わったこと
  4. 12手法のテスト結果(本命の表) · 生 JSON
  5. レジデンシャル IP + 本物のフィンガープリント — 生き残る唯一のスタック
  6. 動作する Playwright + Human Browser コード
  7. Web Bot Auth と stealth、どちらを使うか
  8. FAQ

2026年に Playwright で Cloudflare 保護下のサイトをスクレイピングしようとしたことがあれば、痛みは分かっているはずです。スクリプトがページに到達した瞬間、2秒以内にチャレンジページか 403 が画面を埋めます。ステルスプラグインを何個積もうが関係ありません — データセンター IP 上の素の Playwright は、現在の Cloudflare ボット検出スタックには勝てません。

このガイドでは、Cloudflare が正確に何をチェックしているのか、なぜ大半の回避策が 2026年に機能しないのか、そして今も動く3つの手法を解説します。まず数字から: 2026年5月、同じスクリプトを 12 のスタック構成で実行しました。9つは初回リクエストで失敗、3つが通過。全結果表は下の方にあります。生 JSON もダウンロード可能なので、引用やテストのフォークに使ってください。

なぜ 2026年に Playwright は Cloudflare にブロックされるのか

Cloudflare のボット保護は大きく進化しました。2023年は playwright-extra と stealth プラグインで何とかなりました。2024年は自動化フラグを隠す必要がありました。2026年現在、Cloudflare は単一のトリックでは打ち破れない、複数シグナルを統合した解析を実行しています。

核心的な問題はこれです: Cloudflare が最初にチェックするのは IP アドレスです。ブラウザフィンガープリントが評価される前に、その IP がデータセンター、VPN プロバイダ、本物の家庭用インターネット接続のどれに属するかを Cloudflare は把握しています。

よくある誤解: Playwright にステルスプラグインを追加すれば Cloudflare を突破できる。2026年現在、ステルスプラグイン単体では失敗します。Cloudflare の IP レピュテーションデータベースが主要クラウドプロバイダ(AWS、DigitalOcean、Hetzner、OVH)を瞬時にフラグするため、ブラウザフィンガープリントは無関係になります。

VPS から Playwright を実行すると、トラフィックは Cloudflare がデータセンターと認識する ASN(Autonomous System Number)から発信されます。リスクスコアは自動的に最大化され、いかなるフィンガープリント偽装も助けにはなりません。

遭遇する Cloudflare エラーコード(1020、1010、403、「Just a moment…」)

Playwright がブロックされるとき、Cloudflare は大抵その理由を明示します。Google 検索で最もよく貼り付けられるコードは以下です:

4つすべてが同じ2つのシグナル(IP レピュテーションとフィンガープリントの一貫性)に行き着きます。Cloudflare が次にスコアリングするのはまさにそこです。

Cloudflare が実際にチェックする3つの要素

Cloudflare が何を評価しているかを理解すれば、なぜ大半の突破試行が失敗するのかが分かります。2026年現在の実際のシグナルスタックは以下のとおりです:

1. IP レピュテーションと ASN 分類

Cloudflare は巨大な IP アドレス分類データベースを保持しています。すべてのリクエストは即座にタグ付けされます: 家庭用 ISP、モバイルキャリア、VPN、ホスティングプロバイダ、プロキシサービス、Tor 出口ノード。AWS、DigitalOcean、Hetzner などのデータセンター IP には自動的に高いボット確率スコアが付きます。このチェックを迂回する方法はありません — JavaScript が走る前に決着がついています。

2. ブラウザフィンガープリントの一貫性

Cloudflare は JavaScript チャレンジを実行し、ブラウザの数十のプロパティを検査します: navigator.webdriver、Canvas フィンガープリント、WebGL レンダラ、AudioContext、フォント列挙、プラグイン一覧、画面解像度、タイムゾーンオフセット、言語設定、ハードウェア同時実行数。Linux サーバー上で動くヘッドレス Chromium には、本物の iPhone や Windows PC とは異なる特徴的シグネチャがあります。

3. 挙動分析

マウスの動きパターン、スクロール挙動、ページ滞在時間、操作速度、クリックパターンがすべて解析されます。ボットは即座かつ機械的にページと相互作用しがちです。本物のユーザーにはばらつきがあります — 一時停止し、速度を変えながらスクロールし、曲線でマウスを動かします。

核心の洞察: 3つすべてを同時に解決する必要があります。IP は直したがフィンガープリントは直していない → ブロック。フィンガープリントは直したが IP は直していない → ブロック。両方直したがロボットのように動く → やがてブロック。Human Browser のような完全ソリューションが存在するのはこのためです。

2026年1〜5月に変わったこと

最後に Cloudflare ブロックをデバッグしたのが 2025年なら、地形は足元から変わっています。2026年前半に起きた3つの具体的なシフトが、11月に動いていたスクリプトが5月に HTTP 403 を返している理由を説明します。

1. ML モデル v9 が新しいデフォルトに(2026年 Q1 に全ゾーン展開)

Cloudflare の 機械学習ボットスコアモデル v9 は、すべての新規ゾーンおよび自動更新オプトイン済みの既存ゾーンでデフォルトになりました。v9 は TLS フィンガープリント(JA4)、HTTP/2 フレーム順序、挙動テレメトリを v8 より積極的に重み付けします。実用上の影響: Linux 上の Playwright のデフォルト TLS ハンドシェイクは、ブラウザフィンガープリントが完璧でも目立つようになりました。本物のデバイスに一致する TLS スタックを持つブラウザ(Patchright や Human Browser のヘッドフル Chrome が処理しているもの)を使うか、Enterprise 保護ゾーンでより高いブロック率を受け入れるかの二択です。

2. 異常検知: ボットスコアの下限が 2 に

Cloudflare ボットソリューションのチェンジログによると、異常検知エンジンがフラグしたイベントはボットスコア 2 に固定されるようになりました(1〜99 スケール、低いほどボット寄り)。これは厳しい変更です: 以前はギリギリで通過していた自動化が、30 未満をブロックする Enterprise ルールセットでハードフェイルするようになりました。対策は挙動側です — 速度を落とし、スクロールし、タイミングを変え、同じレジデンシャルセッションからバーストリクエストを絶対に打たないこと。

3. Web Bot Auth: 正当性レーンの開通(2026年5月)

2026年5月、Cloudflare は Web Bot Auth を発表しました。AI エージェントのトラフィックを暗号署名することで、検証済みエージェントがチャレンジなしで通過できる標準です。Anchor Browser は同週にファーストパーティ対応を出荷し、その体験を「安定して CAPTCHA のないセッション。リトライの不安定さが減少」と表現しました。Browserbase も同日に統合を発表しました。これは正当な AI エージェントにとって紛れもなく朗報ですが、サイトオーナーによるオプトイン制であり、実際にアクセスしたい Cloudflare 保護下のロングテールサイトは有効化していません。今後 12〜18 か月の現実的な計画は: 使えるところでは Web Bot Auth、それ以外はレジデンシャル + フィンガープリントです。判断ツリーは下の Web Bot Auth セクションで扱います。

12本の矢を受ける盾、1本だけ貫通 — 12手法の突破結果

12手法のテスト結果 — 社内実測、2026年5月

同じ Playwright スクリプトを 12 のスタック構成で実行し、8 つの Cloudflare 保護サイトを対象としました(Pro 4 / Business 3 / Enterprise 1 — 社内実測、2026年5月、構成あたり約 500 リクエスト)。「Pass」は HTTP 200 で実際のページコンテンツが返ったもので、チャレンジや 403 は含みません。数値は同日スナップショットの目安であり、ターゲットによってばらつきます。

生データ: リクエストレベルの完全な形は cf-bypass-12-methods.json として公開しています — 各行 { method, ip_type, fingerprint, behavior, cf_pro_pass_pct, cf_enterprise_pass_pct, verdict }。引用、フォーク、自前での再実行にどうぞ。

#手法IPフィンガープリント挙動CF ProCF Ent.結論
1素の PlaywrightVPSデフォルト Chromiumなし約2%0%死亡
2playwright-extra + stealthVPSパッチ済みなし約5%0%死亡
3undetected-chromedriverVPSパッチ済みなし約8%0%死亡
4FlareSolverr(プロキシ経由)VPS自動解決なし約3%0%死亡
5curl-impersonate 単体VPSJA4 OKN/A約6%0%JS 実行なし
6Puppeteer + DC プロキシDC プロキシデフォルトなし約4%0%死亡
7VPN + PlaywrightVPN(フラグ済み)デフォルトなし約10%0%不安定
8レジデンシャル IP のみレジデンシャルデフォルトなし約35%約5%部分的
9レジデンシャル + stealth FPレジデンシャルパッチ済みなし約70%約25%そこそこ
10レジデンシャル + iPhone FP + 人間入力レジデンシャルiPhone 15 Proベジェ + ジッタ約95%約75%動作
11Human Browser(マネージド)レジデンシャルiPhone 15 Proマネージド約97%約78%動作
12Web Bot Auth(署名エージェント)N/AN/AN/Aオプトイン済み 100%未オプトイン 0%対応サイト限定

2026年5月時点で今も動くのは手法 10、11、12 の3つです。手法 10 は DIY スタック、手法 11 はそのマネージド版で humanbrowser.cloud、手法 12 は正当性レーンで、Cloudflare Web Bot Auth 検証を明示的に有効化したサイトでのみ動作します。ターゲットごとの完全な形は cf-bypass-12-methods.json。

3層オニオン: ネットワーク、フィンガープリント、挙動 — 突破ソリューション
魔法のフラグは存在しない。あるのはスタックだけだ。

ソリューション: レジデンシャル IP + 本物のフィンガープリント

2026年に安定して機能する唯一のアプローチは、レジデンシャルプロキシ(本物の家庭用インターネット接続)と、本物のデバイスが生成するブラウザフィンガープリントを組み合わせることです。

完全なソリューションの姿は以下のとおりです:

Human Browser はこれらすべてを 1 つの npm パッケージにまとめ、関数呼び出し1回で済むようにしています。セットアップ手順を見ていきましょう。

ステップごと: Playwright での Human Browser セットアップ

ステップ 1: パッケージをインストール

npm install @virixlabs/humanbrowser

ステップ 2: レジデンシャルプロキシの認証情報を取得

レジデンシャルプロキシのアクセスが必要です。humanbrowser.cloud/install から $1 で試せます(実際のタスク1回分) — 従量課金で、ブラウザ稼働時間 $0.10/時間 + エージェント 1 ステップ $0.02(AI 込み)+ レジデンシャルプロキシ $4/GB、サブスクなし。プロキシのユーザー名とパスワードが発行されます。プロキシ配線そのもののより詳しい解説は『Playwright + レジデンシャルプロキシ完全ガイド』を、横並びベンチマークは『2026年スクレイピング用レジデンシャルプロキシ徹底比較』を参照してください。

ステップ 3: 環境変数を設定

# Residential proxy credentials from humanbrowser.cloud
PROXY_USER=your_proxy_username
PROXY_PASS=your_proxy_password
PROXY_HOST=brd.superproxy.io
PROXY_PORT=22225

ステップ 4: スクリプトで launchHuman() を使用

const { launchHuman } = require('@virixlabs/humanbrowser');

async function scrapeCloudflareProtectedSite() {
  const { browser, page, humanScroll, humanRead } = await launchHuman();

  // Navigate — residential IP + real fingerprint passes Cloudflare
  await page.goto('https://example-cloudflare-protected.com', {
    waitUntil: 'domcontentloaded',
    timeout: 30000
  });

  // Simulate reading — critical for behavioral checks
  await humanRead(page);

  // Natural scroll behavior
  await humanScroll(page, 'down');

  // Extract your data
  const content = await page.evaluate(() => document.body.innerText);

  await browser.close();
  return content;
}

scrapeCloudflareProtectedSite().then(console.log).catch(console.error);

動作する完全な実装

Cloudflare 保護サイトをスクレイピングするための、本番投入可能な完全な例です:

const { launchHuman } = require('@virixlabs/humanbrowser');

async function bypassCloudflare(url) {
  const { browser, page, humanRead, humanScroll, sleep } = await launchHuman({
    mobile: true,   // iPhone 15 Pro fingerprint
    country: 'gb'   // UK residential IP
  });

  try {
    console.log('Navigating with residential IP...');
    await page.goto(url, { waitUntil: 'networkidle' });

    // Wait for Cloudflare challenge to resolve (if any)
    await sleep(2000);

    // Check if we passed the challenge
    const title = await page.title();
    if (title.includes('Just a moment') || title.includes('Attention Required')) {
      // Still on challenge — wait longer
      await sleep(5000);
    }

    // Behave like a human reader
    await humanRead(page);
    await humanScroll(page, 'down');
    await humanRead(page);

    const data = await page.evaluate(() => ({
      title: document.title,
      text: document.body.innerText.substring(0, 2000)
    }));

    console.log('Success:', data.title);
    return data;

  } finally {
    await browser.close();
  }
}

// Usage
bypassCloudflare('https://your-target-site.com')
  .then(d => console.log(d))
  .catch(e => console.error('Failed:', e.message));

単発スクリプトではなく、自律エージェントに Cloudflare 突破を組み込む場合は、同じレジデンシャル IP + フィンガープリントスタックがそのまま『AI エージェント向けブラウザ自動化』のパターンに差し込めます。

Web Bot Auth と記された公式封蝋スタンプ

Web Bot Auth と stealth、どちらを使うか

Web Bot Auth は、AI エージェントとサイトオーナーの間で初めて成立した「礼儀正しいプロトコル」の試みです。エージェントは秘密鍵で HTTP リクエストごとに署名し、Cloudflare は公開レジストリと照合し、検証済みエージェントはチャレンジなしで通過します。リファレンス実装はオープンソースです。Anchor が配線後のユーザー体験をこう表現しました: 「安定して CAPTCHA のないセッション。リトライの不安定さが減少」 — 検証済みエージェントトラフィックがまさに取り除こうとしている頭痛そのものです。

Web Bot Auth が向くのは以下のような場合:

レジデンシャル + フィンガープリントを続けるべき場合:

Human Browser は両レーンをサポートします: デフォルトでレジデンシャル IP + 本物のデスクトップ Chrome フィンガープリント(iPhone プロファイルは要望に応じて)、検証済みエージェントフローにはA2A エンドポイント上のマネージド署名エージェントプロファイルが用意されています。

スタックを自作せずに Cloudflare を突破する。 従量課金: ブラウザ稼働時間 $0.10/時間、レジデンシャルプロキシ $4/GB、CAPTCHA $0.005/回、エージェント 1 ステップ $0.02(AI 込み)。サブスクなし。未使用残高は失効なし。レジデンシャルは 75 か国。$1 から試せます — 実際のタスク1回分。その後は $5 からチャージ。

エージェント向け A2A エンドポイント: https://agent.humanbrowser.cloud/a2a

$1 で試す — humanbrowser.cloud/install

または横並びを読む: Human Browser vs Browserbase(2026年版)

FAQ

2026年、Playwright は Cloudflare にブロックされますか?

はい。データセンター IP 上で素の Playwright を動かすと、Cloudflare のボット検出に数秒でブロックされます。安定して突破するには、レジデンシャル IP と現実的なブラウザフィンガープリントの両方が必要です。

2026年、Playwright で Cloudflare を突破する最も確実な方法は?

2026年5月の12手法実測で最も信頼性が高かったのは、レジデンシャル IP + iPhone 15 Pro フィンガープリント + 人間ペースの入力(ベジェ曲線マウス、60〜220ms のキーストローク)の組み合わせです。Cloudflare Pro で約95%、Enterprise で約75%通過しました。Human Browser はこれを 1 回の npm install で提供し、$0.10/時間 + エージェント1ステップ $0.02 + $4/GB の従量課金で利用できます。

playwright-extra + stealth プラグインで Cloudflare を突破できますか?

2026年現在、playwright-extra の stealth 単体では不十分です。Cloudflare は対応済みで、フィンガープリント偽装に加えて本物のレジデンシャル IP が必要になりました。stealth プラグインは一部のチェックには有効ですが、IP レピュテーションのチェックは通過できません。

2026年5月時点で playwright-stealth は今でも有効ですか?

単体ではノーです。12手法の実測では、VPS IP 上の playwright-extra + stealth は Cloudflare Pro のチャレンジを約5%、Enterprise を約0%しか通過しませんでした。レジデンシャル IP を組み合わせると約70% / 約25% に跳ね上がりますが、人間ペースの挙動を伴うマネージド iPhone フィンガープリントには依然として負けます。ステルスライブラリのどの失敗モード(フィンガープリント表面、CDP の露出、TLS、挙動)が今ハードフェイルしているのかの完全な診断は『2026年に playwright-stealth が効かない理由』を読んでください。

Cloudflare の Web Bot Auth とは何ですか?使うべきですか?

Web Bot Auth は 2026年5月に提供開始された Cloudflare の標準仕様で、AI エージェントが HTTP リクエストを暗号署名することで、正当なエージェントがチャレンジを迂回できる仕組みです。Anchor Browser と Browserbase が同週に対応を出荷しました。対象サイトがオプトインしている場合(現状は少数)に使い、それ以外ではレジデンシャル + フィンガープリントを使ってください。

Cloudflare を突破できる最安のレジデンシャルプロキシは?

単体で実用的な突破率を持つ最安オプションは Decodo / Smartproxy の $8.5/GB です。NodeMaven の $7/GB はプールが小さいですがよりクリーンです。プロキシアカウントを自分で運用したくないなら、Human Browser が 75 か国のレジデンシャル IP を $4/GB の従量課金でバンドルし、対応するブラウザフィンガープリントも配線済みで提供しています — 完全な比較は『2026年スクレイピング用レジデンシャルプロキシ徹底比較』を参照。

Human Browser は Browserbase や Anchor Browser とどう違いますか?

Browserbase と Anchor Browser はステルス層を備えたセッション課金のクラウド Chromium で、いずれも 2026年5月に Cloudflare Web Bot Auth サポートを出荷しました。Human Browser は従量課金で、ブラウザ稼働時間 $0.10/時間 + レジデンシャルプロキシ $4/GB + CAPTCHA $0.005/回 + エージェント 1 ステップ $0.02(AI 込み) — サブスクなし、未使用残高は失効なし。横並びの内訳は『Human Browser vs Browserbase』。

レジデンシャルプロキシで Cloudflare を突破するコストは?

Human Browser は従量課金です: ブラウザ稼働時間 $0.10/時間、レジデンシャルプロキシ $4/GB、CAPTCHA $0.005/回、エージェント 1 ステップ $0.02(AI 込み)。サブスクなし、未使用残高は失効なし、$1 から試せます — 実際のタスク1回分。その後は $5 からチャージ。

ディスプレイサーバーなしの $5 VPS でも動きますか?

はい。Human Browser はヘッドレスモードで Playwright を実行するため、ディスプレイサーバー、VNC、X11 のいずれも不要です。Hetzner や Contabo の最安 $5/月クラスを含む、あらゆる Linux サーバーで動作します。重要なのはレジデンシャルの出口であって、コントロールプレーンがどこにあるかではありません。

関連記事

Top up — $20

Loading secure checkout…

More coins →