ウェブスクレイピング時のCloudflareターニングスタイルの解決方法
Specialist in Anti-Bot Strategies
TL;DR:
- Cloudflare Turnstileはユーザーではなくブラウザをスコアリングします。 ブラウザのフィンガープリントの一貫性、行動信号、および出口IPをバックグラウンドで読み取り、信頼できるブラウザに
cf_clearanceクッキーを発行します。したがって、対策はパズルを解くことではなく、信頼できるブラウザであることです。 - ローカルのヘッドレスブラウザは、3つの軸で同時にTurnstileに失敗します。
navigator.webdriverによる告知、ヘッドレスデフォルトのフィンガープリント、そしてデータセンターの出口IPです。これら3つを手動で修正することは、メンテナンスのトレッドミルです。 - Scrapeless Scraping Browserはレンダリング中にTurnstileをクリアします。 実際の自己開発されたChromium、一貫したセッションごとのフィンガープリント、195カ国以上の住宅出口があり、1つのWebSocketエンドポイントを介してアクセスされます。
- あなたの自動化コードは変更されません。 CDPを介して話すため、
puppeteer.connect()およびchromium.connectOverCDP()はそのまま機能します。接続をクラウドブラウザにポイントし、ポストチャレンジのDOMを読み取ります。 - Turnstileは3つのモードで提供されます。 非対話型、不可視、管理Checkboxで、すべてのモードは同じ
cf_clearanceグラントで終了します。 - 無料で始められます。 新しいScrapelessアカウントには無料のScraping Browserランタイムが含まれています — app.scrapeless.comでサインアップしてください。
はじめに:Turnstileはブラウザをスコアリングし、パズルではありません
Cloudflare Turnstileは画像CAPTCHAではありません。それはバックグラウンドで実行され、ページを読み込んだブラウザを評価します:フィンガープリントが内部で一貫しているか、相互作用の信号が人間のように見えるか、出口IPにきれいな評判があるかどうかです。スコアが合格すると、Cloudflareはcf_clearanceクッキーを設定し、実際のページが読み込まれます。合格しないと、コンテンツの代わりにインタースティシャルが表示されます。
これは「Turnstileを解決する」という意味を変えます。提出する答えはありません — 仕事はCloudflareがすでに信頼しているブラウザを提示することです。ローカルのヘッドレスChromiumはこれができません:それはnavigator.webdriverプロパティを通じて自動化を宣言し、ヘッドレスデフォルトのフォントとキャンバスの動作を持ち、しかも出口がIPレピュテーションサービスに知られています。これらすべてをローカルで修正し、Chromiumと検出器が変わるたびに修正し続けることができます。
このガイドは短い道を選びます:PuppeteerまたはPlaywrightでScrapeless Scraping Browser — 自動検出を防ぐクラウドブラウザ — を駆動し、フィンガープリント、行動面、出口IPをサーバーサイドで処理し、Turnstileは通常のレンダリング中にクリアされます。
Turnstileが実際にチェックするもの
CloudflareのTurnstileドキュメントは、訪問者を中断させずに検証するウィジェットを説明しています。実際には、3つのモードで提供され、同じクラウドブラウザがすべてのモードを扱うため、一貫した実際のブラウザを提示します。
| モード | 訪問者が見るもの | スコアリングされるもの |
|---|---|---|
| 非対話型 | クリックなしで検証するウィジェット | フィンガープリント + パッシブ行動信号 |
| 不可視 | 描画されない | 純粋なバックグラウンドスコアリング |
| 管理 | 「人間であることを確認」チェックボックス | 上記に加え、相互作用イベント |
3つすべてがcf_clearanceクッキーに解決されます — 通常のHTTPクッキーで、合格したブラウザに設定されます。Turnstileは、IETF Privacy Pass発行プロトコルで定義されたプライバシーパス風のトークンも利用するため、一貫した信頼できるブラウザが単一の回避策よりも重要なのです。
なぜScrapeless Scraping Browserなのか
Scrapeless Scraping Browserは、ウェブクローラーとAIエージェントのために設計されたカスタマイズ可能な自動検出防止クラウドブラウザです。特にTurnstileのために、以下の特徴を持っています:
- 実際の自己開発されたChromiumで、ウィジェットのJavaScriptをChromeと正確に実行し、課題が解決されて停止しません。
- 一貫したセッションごとのフィンガープリント —
navigator.webdriverの告知がなく、ヘッドレスデフォルトが漏れません。 - 195カ国以上の住宅出口 — Turnstileは出口IPをスコアリングし、住宅地域はデータセンターIPではないクリーンな読み取りになります。
- セッションの持続性により、同じセッション内のリクエスト間で
cf_clearanceグラントを再利用できます。 - 1つの接続面 — 各オプションは同じWebSocketエンドポイントのクエリパラメータです。
無料プランでAPIキーを取得するには、app.scrapeless.comを訪れてください。
前提条件
- Node.js 18以上
- ScrapelessアカウントとAPIキー — app.scrapeless.comでサインアップしてください。
- PuppeteerまたはPlaywrightとターミナルに対する基本的理解
以下の例は、Scraping Browserの文書化されたCDPサーフェスに対して検証されています。これらをエンドツーエンドで実行するには、ライブのScrapelessセッションが必要です。各例を実行するには、APIキーを追加してください。完全な接続の詳細は、Scraping Browserのドキュメントにあります。
インストール
bash
npm install puppeteer-core # または: playwright-core
export SCRAPELESS_API_KEY=sk_... # 無料キーは https://app.scrapeless.com
接続の構成
すべては wss://browser.scrapeless.com/api/v2/browserのクエリパラメータです。Turnstileが出口IPをスコアリングするため、proxyCountryを居住地域に固定してください。
javascript
import puppeteer from "puppeteer-core";
const params = new URLSearchParams({
token: process.env.SCRAPELESS_API_KEY,
sessionTTL: "180",
proxyCountry: "US",
});
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://browser.scrapeless.com/api/v2/browser?${params}`,
});
Turnstileをクリアしてトークンを読み取る
Scrapeless Scraping Browserは、レンダリング中に自動的にTurnstileを解決します — 明示的な解決呼び出しは必要ありません。ナビゲートし、Turnstileトークンが表示されるのを待ちます。これがウィジェットが解決されたことのサインです。以降のスクレイピングはあなた次第です。
javascript
import puppeteer from "puppeteer-core";
const TARGET = "https://www.scrapingcourse.com/cloudflare-challenge";
const params = new URLSearchParams({
token: process.env.SCRAPELESS_API_KEY,
sessionTTL: "180",
proxyCountry: "US",
});
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://browser.scrapeless.com/api/v2/browser?${params}`,
});
const page = await browser.newPage();
await page.goto(TARGET, { waitUntil: "domcontentloaded", timeout: 60000 });
// ブラウザは自動的にTurnstileを解決します。トークンが確認されるのを待ちます。
await page.waitForFunction(
() => window.turnstile && window.turnstile.getResponse(),
{ timeout: 60000 }
);
const token = await page.evaluate(() => window.turnstile.getResponse());
console.log("turnstileトークン ->", token.slice(0, 24) + "...");
console.log("タイトル ->", await page.title());
await browser.close();
無料プランのAPIキーを取得してください: app.scrapeless.com
Playwrightでの同じフロー
Playwrightは同じクラウドブラウザにCDPを介して接続します。セッションはレンダリング中に自動的にTurnstileを解決し、トークンを同じ方法で待ちます。
javascript
import { chromium } from "playwright-core";
const params = new URLSearchParams({
token: process.env.SCRAPELESS_API_KEY,
sessionTTL: "180",
proxyCountry: "US",
});
const browser = await chromium.connectOverCDP(
`wss://browser.scrapeless.com/api/v2/browser?${params}`
);
const page = await browser.newPage();
await page.goto("https://www.scrapingcourse.com/cloudflare-challenge", {
waitUntil: "domcontentloaded",
});
await page.waitForFunction(() => window.turnstile && window.turnstile.getResponse());
console.log("タイトル ->", await page.title());
await browser.close();
パスを確認する
信頼できるサインはTurnstileトークンです — 一度 window.turnstile.getResponse() が値を返したら、ウィジェットが解決され、次に進むことができます。Cloudflareはまた、合格したセッションに cf_clearance クッキーを設定します。これを読み取ることで、他のリクエストにクリアランスを持ち運ぶことができます。
javascript
const token = await page.evaluate(() => window.turnstile && window.turnstile.getResponse());
console.log("turnstileトークンが存在 ->", Boolean(token));
const cookies = await page.cookies();
console.log("cf_clearanceが存在 ->", cookies.some((c) => c.name === "cf_clearance"));
返されるもの
navigator.webdriverシグナルは存在しない — クラウドブラウザは自動化を告知しないため、Turnstileが最初のチェックを実行する際、実際のChromeのように見えます。- 出口IPは
proxyCountryと一致します — 居住地域はデータセンターIPよりもはるかに信頼性が高くクリアされます。 - パス後に
cf_clearanceが存在する — 同じセッションを再利用して、フォローアップリクエストに承認を持ち運びます。 - 頑固なページのためにセッションを温める — 保護されたページの前に、同じセッションでサイトのホームページを最初に読み込んで、行動表面が通常の訪問のように見えるようにします。
結論: Turnstileをクリアし、コードを保持する
Turnstileの解決は、挑戦に答えることではなく、Cloudflareが信頼するブラウザを提示することです。Scrapeless Scraping Browserは、Turnstileがスコアリングする3つの要素(フィンガープリンター、行動、出口IP)をサーバーサイドで処理するため、PuppeteerやPlaywrightのコードは接続URLだけを変更します。proxyCountryを住宅地域に固定し、ホームページでセッションを暖め、cf_clearanceを読み取ってパスを確認してください。間接的なチャレンジとウィジェットの違いについては、Cloudflare challenge vs Turnstileを参照し、Scrapelessの料金ページでプランを比較してください。
Turnstileクリアリングパイプラインの構築に準備はできましたか?
私たちのコミュニティに参加して、無料プランを取得し、Turnstile保護サイトをスクレイピングする開発者たちとつながりましょう:Discord · Telegram。
app.scrapeless.comにサインアップして、無料のScraping Browserランタイムを取得し、Turnstileをレンダリング中にクリアするクラウドブラウザにPuppeteerまたはPlaywrightをポイントします。
FAQ
Q: Turnstileは、解決サービスで解かなければならないCAPTCHAですか?
合格するブラウザではありません。Turnstileは主にフィンガープリンター、行動、IPをバックグラウンドでスコアリングし、cf_clearanceクッキーを発行します。クラウドブラウザは通常のレンダリング中にそのスコアを通過するように構築されているため、別のパズルに答える必要はありません。
Q: 目に見えないモードや非インタラクティブモードにも対応していますか?
はい。全てのTurnstileモードは同じcf_clearanceの授与で終了し、管理されたセッションはチェックボックスのバリアントと同じ方法で受動的スコアリングを処理します。
Q: プロキシは必要ですか?
いいえ。住宅用の出口は組み込まれています — proxyCountryを地域またはANYに設定します。Turnstileは出口IPをスコアリングするため、住宅地域の方がデータセンターのアドレスよりも安定してクリアできます。
Q: 一部のページでチャレンジがまだ表示されます — どうすれば助かりますか?
proxyCountryを住宅地域に固定し、保護されたページの前に同じセッション内でサイトのホームページを最初に読み込むことでセッションを暖めると、行動面が通常の訪問のように見えます。
Q: 私のPuppeteerやPlaywrightコードは互換性がありますか?
はい。Scraping BrowserはCDPに対応しているため、puppeteer.connect()やchromium.connectOverCDP()は変更なしで動作します — 接続URLだけを変更すれば良いです。
Q: Turnstileをクリアすることは合法ですか?
サイトの利用規約および適用法に従って、公開されているデータにアクセスしてください。これらの技術は、許可を得た自動化、テスト、研究用です。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



