のガイドで強調されているように、このブラウザ自動化ライブラリは、動的コンテンツ サイトからデータを抽出するための素晴らしいツールです。ただし、他のツールと同様に、欠点もあります。そこで Puppeteer Extra の出番です。 Puppeteer を使用した Web スクレイピング このガイドでは、 ラップしてプラグイン サポートで拡張するライブラリである を紹介します。Puppeteer スクレイピング プロジェクトを次のレベルに引き上げる準備をしましょう! 🚀 puppeteer puppeteer-extra Puppeteer Extraとは何ですか? 、 の軽量ラッパーで、クリーンなインターフェースを通じてプラグインの統合を可能にします。Puppeteer の によって開発されたものではありませんが、このコミュニティ主導のプロジェクトは毎週数十万回ダウンロードされ、GitHub で 6,000 を超えるスターを獲得しています 📈。 Puppeteer Extra は puppeteer チーム 確認してください。puppeteer リポジトリの人気は長年にわたって着実に上昇していることがわかります。 以下の GitHub スターチャートを puppeteer-extra Puppeteer Extra で公式にサポートされているプラグインは次のとおりです。 : Puppeteer をボットとして検出しにくくします。 puppeteer-extra-plugin-stealth : reCAPTCHA と hCaptcha を自動的に解決します。 puppeteer-extra-plugin-recaptcha : 広告とトラッカーの高速で効率的なブロッカーを適用することで、帯域幅と読み込み時間を削減します。 puppeteer-extra-plugin-adblocker : どこからでも Puppeteer ブラウザのデバッグを可能にします。 puppeteer-extra-plugin-devtools : インタラクティブな REPL を使用して、Puppeteer のデバッグと探索をより簡単に、より楽しくします。 puppeteer-extra-plugin-repl : ページの読み込み中に、画像、メディア ファイル、CSS スタイルシートなどのリソースをプログラムでブロックします。 puppeteer-extra-plugin-block-resources : ユーザーの操作なしですべてのサイトで Adobe Flash コンテンツを実行できるようにします。 puppeteer-extra-plugin-flash : 動的な置換をサポートし、すべてのページの ヘッダーを匿名化します。 puppeteer-extra-plugin-anonymize-ua User-Agent : カスタム Chrome/Chromium ユーザー設定を設定します。 puppeteer-extra-plugin-user-preferences さらに、次のコミュニティ プラグインと統合されます。 : Puppeteer ブラウザ ウィンドウをリアルタイムで最小化および最大化します。 puppeteer-extra-plugin-minmax : Chromium スクリーンキャスト API を介して puppeteer セッションをリモートで表示および操作します。 puppeteer-extra-plugin-portal なぜ Puppeteer の追加バージョンが必要なのでしょうか? Puppeteer は、間違いなく の 1 つです。しかし、正直に言うと、特にブラウザ フィンガープリンティングや CAPTCHA などのボット対策技術に直面した場合、限界があります。reCAPTCHA への対処方法については、ガイドをお読みください。 スクレイピングとテストのためのトップクラスのヘッドレス ブラウザ ライブラリ 自動化 ボット対策を備えた Web サイトは、Puppeteer スクリプトを簡単に検出してブロックできます。Puppeteer のデフォルトの動作を拡張およびカスタマイズする方法があればいいのですが... …そうです、それがまさに Puppeteer Extra の目的です! Puppeteer Extra は Puppeteer のパワーアップのようなもので、プラグインのサポートを追加して、これらの大きな欠点を解決します。すべてをオーバーライドまたは拡張するのではなく、Puppeteer をラップして、必要なプラグインのみを登録できるようにします。🦸 : Web スクレイピングのセットアップとプラグイン puppeteer-extra 次のようにして、プロジェクトの npm 依存関係に を追加できます。 Puppeteer Extra npm install puppeteer-extra ⚠️ : 動作するには が必要なので、プロジェクトに両方のパッケージがインストールされていることを確認してください。 注意 puppeteer-extra puppeteer 次に、 ライブラリではなく、 から オブジェクトをインポートする必要があります。 puppeteer puppeteer-extra puppeteer const puppeteer = require("puppeteer-extra") // for ESM users: // const { puppeteer } from "puppeteer-extra" Puppeteer API のすべては同じままですが、ちょっとした魔法が追加されました ✨。puppeteer オブジェクト 、Puppeteer Extra プラグインをプラグインするための メソッドを公開するようになりました。 puppeteer use() これらのプラグインの機能について詳しく調べ、Web スクレイピングのレベルをどう向上させるかを見てみましょう。 パペッティア エクストラ プラグイン ステルス (単に Puppeteer Stealth とも呼ばれる)には、ボット検出を減らすように設計された一連の構成が含まれています。これは、Puppeteer をボットとして公開する可能性のある検出可能なプロパティと設定を上書きします。 Puppeteer Extra Plugin Stealth 詳細については、 に関するガイドをご覧ください。 Puppeteer Stealth によるブロックを回避する方法 ⚙️ : インストール npm install puppeteer-extra-plugin-stealth 💡 : 使用方法 const StealthPlugin = require("puppeteer-extra-plugin-stealth") // for ESM users: // import StealthPlugin from "puppeteer-extra-plugin-stealth" puppeteer.use(StealthPlugin()) パペッティア追加プラグインブロックリソース Puppeteer ブラウザが特定のリソースを読み込まないようにするプラグイン。サポートされているリソース タイプには、 、 、 、 、 、 、 、 、 、 、 、 、 あります。 document stylesheet image media font script texttrack xhr fetch eventsource websocket manifest other リソースのブロックは、グローバルとローカルの両方で構成できます。 ⚙️ : インストール npm install puppeteer-extra-plugin-block-resources 💡 : 使用方法 const BlockResourcesPlugin = require("puppeteer-extra-plugin-block-resources") // for ESM users: // import BlockResourcesPlugin from "puppeteer-extra-plugin-block-resources" 次に、すべてのページでグローバルにブロックするようにリソースを設定できます。 puppeteer.use(BlockResourcesPlugin({ blockedTypes: new Set(["image", "stylesheet"]), })) 同様に、ブロックするリソースをローカルで選択することもできます。 puppeteer.use(BlockResourcesPlugin() const browser = await puppeteer.launch() const page = await browser.newPage() blockResourcesPlugin.blockedTypes.add("stylesheet") await page.goto("https://www.example.com/", { waitUntil: "domcontentloaded" }) パペッティア-追加プラグイン-匿名化-UA Puppeteer によって制御されるブラウザによって設定された を匿名化するプラグイン。🎭 User-Agent ヘッドレス モードで Chrome ユーザー エージェントから 文字列を削除する機能を提供し、カスタム関数によるユーザー エージェントの動的な置換をサポートします。Puppeteer で実際の動作を確認してください。 'Headless' ユーザー エージェント ガイド Web スクレイピングに最適なユーザー エージェントを見つけましょう。 ⚙️ : インストール npm install puppeteer-extra-plugin-anonymize-ua 💡 : 使用方法 const AnonymizeUAPlugin = require("puppeteer-extra-plugin-anonymize-ua") // for ESM users: // import AnonymizeUAPlugin from "puppeteer-extra-plugin-anonymize-ua" 次に、匿名ユーザー エージェントを設定します。 puppeteer.use(AnonymizeUAPlugin({ stripHeadless: true, })) また、カスタム関数を使用して動的なユーザー エージェントを設定することもできます。 puppeteer.use(AnonymizeUAPlugin({ customFn: (ua) => ua.replace("Chrome", "Chromium")}) })) パペッティアエクストラは万能薬ではない 、Puppeteer スクリプトがどれだけ巧妙でカスタマイズされていても、高度なアンチボット システムがそれを検出してシャットダウンすることができます。しかし、どうしてそんなことが可能なのでしょうか? 🤔 Playwright の場合と同様に 、次のように詳しく説明されています。 puppeteer-extra-stealth-plugin ドキュメントでは 注意: これはかなり興味深い猫とネズミのゲームにおける友好的な競争であると私は考えています。他のチーム (👋) がヘッドレス Chromium を検出したい場合、それを実行する方法はまだあります (少なくとも私はいくつか気づきました。今後のアップデートで対処します)。 ヘッドレス Chromium を検出するすべての方法を防ぐのはおそらく不可能ですが、コストがかかりすぎるほど、または誤検知が多すぎて実現不可能になるほど困難にすることは可能であるはずです。 したがって、Puppeteer Extra は Matrix の Neo のようにほとんどの基本的なボット検出を回避できますが、 することはできません。もちろん、 こともできますが、それでも十分ではない可能性があります。 Cloudflare を確実にバイパス プロキシを Puppeteer に統合する https://www.youtube.com/watch?v=7pnchjPlGTw&embedable=true 問題は Puppeteer 自体ではなく (実際、Puppeteer は最高です! 🤘)、それが制御しているブラウザです。本当の解決策は? 次のような強力なブラウザです: 通常のブラウザと同様にヘッダーモードで動作し、ボットの検出を減らします。 クラウド内でスケーリングすることで、インフラストラクチャ管理の時間とコストを節約します。 市場で最大かつ最も信頼性の高いプロキシ ネットワークの 1 つを搭載したローテーション IP を提供します。 CAPTCHA の解決、ブラウザのフィンガープリント、Cookie とヘッダーのカスタマイズ、再試行を自動的に処理して、効率を最適化します。 Playwright、Selenium、Puppeteer などの主要なブラウザ自動化ライブラリとシームレスに統合されます。 信じられないかもしれませんが、これは遠い夢ではありません。これは現実であり、まさに Bright Data の が提供できるものなのです。 Scraping Browser 最後に Puppeteer は、テクノロジーの世界で最も広く使用されているブラウザ自動化ツールの 1 つですが、スーパーヒーローにも限界があります。コミュニティは、カスタム プラグインを通じて Puppeteer に非常に優れた新機能を追加するパッケージである を導入しました。 puppeteer-extra しかし、ここで問題なのは、これらのプラグインはスクレイピング操作をはるかに強力にすることができますが、魔法のようにあなたをゴーストに変えることはできないということです👻。高度なボット検出機能を備えたサイトは、あなたをブロックできる可能性があります。 Bright Data の Scraping Browser を使用すると、すべてのアンチボットを回避できます。これは、 検出不可能なクラウド ブラウザです。自動化されたスクリプトを通じてでも、Web をあらゆる場所のあらゆる人にとっての公共スペースにするという私たちの使命にご参加ください。 Puppeteer とシームレスに統合される 次回まで、自由にインターネットを探索し続けてください!🌐