スクレイプレスを使ったPuppeteer検出されないフィンガープリントブラウザ
Scraping and Proxy Management Expert
TL;DR:
- PuppeteerはすでにChrome DevToolsのプロトコルをサポートしているため、
puppeteer.connect()でScrapelessに一つのURLを指し示します。 ローカルのpuppeteer.launch()をクラウドブラウザへの接続に置き換えると、すべてのスクリプトがクリーンなアイデンティティで実行されます。 - ローカルのPuppeteerブラウザは3つの軸で自動化を漏出させます:
navigator.webdriverフラグ、ヘッドレスデフォルトのフィンガープリンツ、そしてあなた自身の出口IP。アンチボットシステムはこの3つを総合的にスコアリングします。 - Scrapeless Scraping Browserはすべてをサーバーサイドで処理します — 実際の自己開発Chromium、一貫したセッションごとのフィンガープリンツは
webdriverの手がかりをもたず、195カ国以上での住宅用出口を提供します。 - あなたのPuppeteerコードは変更されません。
page.goto、page.evaluate、セレクタ、および待機はローカルと全く同じように動作します;接続行だけが移動します。 - 検証済みライブ:
puppeteer.connect()セッションはnavigator.webdriverをfalseとして読み取り、米国の住宅用出口IPを報告し、ターゲットページの実際のタイトルを返しました。 - 無料で始められます。 新しいScrapelessアカウントには無料のScraping Browserランタイムが含まれています — app.scrapeless.comでサインアップ。
導入:クリーンに読み取るブラウザにPuppeteerを接続する
PuppeteerはDevToolsプロトコルを介して実際のChromiumを操作します。そのChromiumを自分のマシンで立ち上げると、すべてのスクリプトが自動化を明らかにするシグナルを引き継ぎます:それはnavigator.webdriverプロパティ</a」を通じて自己を認識させ、ヘッドレスデフォルトのフォントやキャンバスの挙動を出荷し、評判サービスがすでに認識しているIPから出ます。
それぞれをステルスプラグインでパッチし、Chromiumと検出器が動くたびにパッチし続けることもできます。ですが、短い道があります。Puppeteerはpuppeteer.connect()を通じてDevToolsエンドポイントを公開している任意のブラウザに接続し、Scrapeless Scraping BrowserはChrome DevToolsプロトコルのエンドポイントです。Puppeteerをそれに向けると、フィンガープリンツ、挙動の表面、そして出口IPがサーバーサイドに移動します — あなたのスクリプトはそのままです。
何ができるか
- アンチボット保護されたサイトに対してスクリプトを実行する — クラウドブラウザはレンダリング中にチャレンジをクリアするため、
page.gotoでコンテンツに到達します。 - セッションをローカライズする —
proxyCountryを固定し、ページがその市場の訪問者が見るように解決します。 - 一貫したフィンガープリンツを送信する —
fingerprintオブジェクトを渡し、ユーザーエージェント、プラットフォーム、画面、タイムゾーンを一貫させます。 - ログイン状態を保持する —
profileIdを持ち運び、クッキーやローカルストレージが実行間で生き残ります。 - 自分のマシンを超えてスケールする — セッションはクラウドで実行され、あなたのノートパソコン上ではありません。
- 自動化を同一に保つ —
page.evaluate、セレクタ、クリック、待機は変更されません。
なぜScrapeless Scraping Browserなのか
Scrapeless Scraping Browserは、ウェブクローラーやAIエージェント向けに設計されたカスタマイズ可能なアンチ検出クラウドブラウザです。特にPuppeteerにとって、それは以下をもたらします:
- 実際に自己開発されたChromiumがページのJavaScriptをChromeと同様に正確に実行するため、SPAやチャレンジが解決します。
- 一貫したセッションごとのフィンガープリンツ —
navigator.webdriverの手がかりなし、ヘッドレスデフォルトが漏れ出すことがありません。 - 195カ国以上の住宅用出口、セッションごとに一つの
proxyCountry値で選択します。 profileIdによるセッションの持続性、認証フローがその状態を保持します。- 一つの接続面 — すべてのオプションは同じWebSocketエンドポイントのクエリパラメータです。
無料プランでAPIキーを取得するには、app.scrapeless.comをご覧ください。
必要条件
- Node.js 18以上
puppeteer-coreがインストールされていること(ローカルのChromiumは不要 — リモートのものに接続します)- ScrapelessアカウントとAPIキー — app.scrapeless.comでサインアップ
完全な接続詳細は、Scraping Browserのドキュメントにあります。
インストール
puppeteer-coreを使用します — クラウド内にブラウザが存在するため、ローカルのChromiumのダウンロードは含まれていません。
bash
npm install puppeteer-core
export SCRAPELESS_API_KEY=your_api_token_here # 無料キーはhttps://app.scrapeless.comで取得
接続の構成
エンドポイントはwss://browser.scrapeless.com/api/v2/browserであり、すべてのオプションはクエリパラメータです。proxyCountryを住宅地域に固定します。
javascript
import { URLSearchParams } from "node:url";
function scrapelessEndpoint(extra = {}) {
```javascript
const params = new URLSearchParams({
token: process.env.SCRAPELESS_API_KEY,
sessionTTL: "180", // 秒
proxyCountry: "US",
...extra,
});
return `wss://browser.scrapeless.com/api/v2/browser?${params}`;
}
## 接続と実行
`puppeteer.launch()`を`puppeteer.connect()`に置き換え、エンドポイントを渡します。それ以降は標準のPuppeteerです。
```javascript
import puppeteer from "puppeteer-core";
import { URLSearchParams } from "node:url";
const params = new URLSearchParams({
token: process.env.SCRAPELESS_API_KEY,
sessionTTL: "180",
proxyCountry: "US",
});
const endpoint = `wss://browser.scrapeless.com/api/v2/browser?${params}`;
const browser = await puppeteer.connect({ browserWSEndpoint: endpoint });
const page = await browser.newPage();
await page.goto("https://www.scrapeless.com/en", { waitUntil: "domcontentloaded", timeout: 60000 });
console.log("タイトル:", await page.title());
console.log("navigator.webdriver:", await page.evaluate(() => navigator.webdriver));
await page.goto("https://httpbin.io/ip", { waitUntil: "domcontentloaded", timeout: 60000 });
console.log("出口IP:", JSON.parse(await page.evaluate(() => document.body.innerText)).origin);
await browser.close();
このスクリプトを実行した結果、ページタイトル「Effortless Web Scraping Toolkit - Scrapeless」、「navigator.webdriver: false」、および米国の住宅出口IPが表示されました — あなたがすでに使用しているPuppeteer APIと、クラウドブラウザを通じて提供されるものと同じです。
無料プランでAPIキーを取得します: app.scrapeless.com
一貫したフィンガープリンツを送信
fingerprintオブジェクトは、ブラウザの広告されたアイデンティティを一貫して保ちます — ユーザーエージェント、プラットフォーム、スクリーン、タイムゾーンがすべて一致します。これをJSONエンコードし、URLエンコードして、追加のパラメーターとして渡します。W3C WebDriver仕様は、準拠した自動化がwebdriverフラグを公開することを要求しています; クラウドブラウザはこれを持っていないため、あなたが送信するフィンガープリンツと矛盾するものはありません。
javascript
const fingerprint = {
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
platform: "Windows",
screen: { width: 1920, height: 1080 },
localization: { languages: ["en-US", "en"], timezone: "America/New_York" },
};
const endpoint = scrapelessEndpoint({ fingerprint: encodeURIComponent(JSON.stringify(fingerprint)) });
ローカルPuppeteerの限界
自分のChromiumでPuppeteerを実行するのは、オープンで保護されていないページには問題ありません。フリクションはターゲットがブラウザを判定するところで始まります: データセンターIPで停滞するチャレンジインタースティシャル、ヘッドレスデフォルトをフィンガープリンティングするページ、または訪問の間に安定したアイデンティティを求めるログインウォール。各々はフィンガープリンツ、挙動、またはIPの問題です — ちょうどクラウドブラウザがサーバーサイドで対処する3つです。Scrapelessに接続すると、これらのケースを管理されたセッションに手渡すことができ、あなたのpage呼び出しは同じままです。
結果として得られるもの
セッションは、任意のPuppeteerセッションと同じように動作します — page.goto、page.evaluate、page.$$eval、およびクッキーすべてが機能します。クラウドブラウザで実行する際のいくつかの率直な観察:
navigator.webdriverはfalseです。したがって、サイトが実行する最初のチェックは本物のChromeのように読み取られます。sessionTTLはここでは秒単位です — フロー全体をカバーするのに十分長く設定します; セッションが期限切れになると閉じます。- 出口IPは
proxyCountryと一致します — 地理的に制限されたページは、現地の訪問者が見るように解決します。 - 頑固なページのためにセッションを温めます — プロテクトされたページの前にサイトのホームページを最初に読み込むことで、行動面が通常の訪問のように読み取られます。
結論: 同じPuppeteer、クリーンなブラウザ
Puppeteerが何をするかを決定し、Scrapelessがブラウザがサイトに対してどのように見えるかを決定します。統合は1行で — クラウドブラウザに対してpuppeteer.connect() — 残りのスクリプトは変更されません。proxyCountryを住宅地域に設定し、一貫したfingerprintを渡し、認証フロー用にprofileIdを再利用します。Pythonから同じクラウドブラウザを実行する場合は、Scraplingプロダクションスクレーパーガイドを参照し、Scrapeless料金ページでプランを比較してください。
Puppeteerスクレイピングパイプラインを構築する準備はできましたか?
無料プランを請求し、Puppeteerパイプラインを構築している開発者とつながるために、私たちのコミュニティに参加してください: Discord · Telegram。
以下のリンクでサインアップして、無料のスクレイピングブラウザのランタイムを取得し、`puppeteer.connect()`をターゲットが指紋認識できないクラウドブラウザに向けてください。[app.scrapeless.com](https://app.scrapeless.com/passport/login/?utm_source=website&utm_medium=blog&utm_campaign=scrapingbrowser&utm_term=puppeteer-undetected-fingerprint-browser)
---
## よくある質問(FAQ)
**Q: Puppeteerのコードを変更する必要がありますか?**
いいえ。ブラウザを取得する方法を変更します — `puppeteer.connect({ browserWSEndpoint })`を使う代わりに`puppeteer.launch()`を使います。その後のすべての`page`呼び出しは同じです。
**Q: `puppeteer`と`puppeteer-core`のどちらを使用すべきですか?**
`puppeteer-core`を使用してください。ローカルブラウザを起動するのではなく、クラウドブラウザに接続するため、バンドルされたChromiumのダウンロードをスキップします。
**Q: プロキシは必要ですか?**
いいえ。住宅用エグレスが組み込まれています — `proxyCountry`を地域または`ANY`に設定します。配線を行うための別のプロキシは必要ありません。
**Q: `sessionTTL`は秒ですか、それともミリ秒ですか?**
ここでのスクレイピングブラウザ接続では秒です — `180`は3分です。全体のフローをカバーするように設定してください。
**Q: Puppeteerを使用したウェブスクレイピングは合法ですか?**
一般的には公に利用可能なデータにアクセスすることは許可されていますが、ルールは管轄区域やサイトによって異なります。ターゲットの利用規約を確認し、ロボットの指示を尊重し、重要なことについては法律顧問に相談してください。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



