paint-brush
Puppeteer Extraでスクレイピングプロジェクトをレベルアップ@brightdata
264 測定値

Puppeteer Extraでスクレイピングプロジェクトをレベルアップ

Bright Data6m2024/09/04
Read on Terminal Reader

長すぎる; 読むには

Puppeteer Extra は、プラグイン サポートを追加して Puppeteer の制限を克服することで、Puppeteer を強化します。この軽量ラッパーは、ボット検出の回避、CAPTCHA の解決、不要なリソースのブロックなどのタスク用のプラグインを導入します。その強みにもかかわらず、高度なアンチボット システムは Puppeteer を検出できます。Puppeteer Extra のプラグインを調べて、Web スクレイピング ゲームを強化してください。ただし、高度なボット防御が依然として課題となる可能性があることに注意してください。
featured image - Puppeteer Extraでスクレイピングプロジェクトをレベルアップ
Bright Data HackerNoon profile picture
0-item

Puppeteer を使用した Web スクレイピングのガイドで強調されているように、このブラウザ自動化ライブラリは、動的コンテンツ サイトからデータを抽出するための素晴らしいツールです。ただし、他のツールと同様に、欠点もあります。そこで Puppeteer Extra の出番です。


このガイドでは、 puppeteerラップしてプラグイン サポートで拡張するライブラリであるpuppeteer-extraを紹介します。Puppeteer スクレイピング プロジェクトを次のレベルに引き上げる準備をしましょう! 🚀

Puppeteer Extraとは何ですか?

Puppeteer Extra はpuppeteerの軽量ラッパーで、クリーンなインターフェースを通じてプラグインの統合を可能にします。Puppeteer のチームによって開発されたものではありませんが、このコミュニティ主導のプロジェクトは毎週数十万回ダウンロードされ、GitHub で 6,000 を超えるスターを獲得しています 📈。


以下の GitHub スターチャートを確認してください。puppeteer puppeteer-extraリポジトリの人気は長年にわたって着実に上昇していることがわかります。 GitHub での Puppeteer Extra の台頭

Puppeteer Extra で公式にサポートされているプラグインは次のとおりです。

さらに、次のコミュニティ プラグインと統合されます。

  • puppeteer-extra-plugin-minmax : Puppeteer ブラウザ ウィンドウをリアルタイムで最小化および最大化します。
  • puppeteer-extra-plugin-portal : Chromium スクリーンキャスト API を介して puppeteer セッションをリモートで表示および操作します。

なぜ Puppeteer の追加バージョンが必要なのでしょうか?

Puppeteer は、間違いなくスクレイピングとテストのためのトップクラスのヘッドレス ブラウザ ライブラリの 1 つです。しかし、正直に言うと、特にブラウザ フィンガープリンティングや CAPTCHA などのボット対策技術に直面した場合、限界があります。reCAPTCHA自動化への対処方法については、ガイドをお読みください。


ボット対策を備えた Web サイトは、Puppeteer スクリプトを簡単に検出してブロックできます。Puppeteer のデフォルトの動作を拡張およびカスタマイズする方法があればいいのですが...


…そうです、それがまさに Puppeteer Extra の目的です!

パペティアエクストラ vs パペティア

Puppeteer Extra は Puppeteer のパワーアップのようなもので、プラグインのサポートを追加して、これらの大きな欠点を解決します。すべてをオーバーライドまたは拡張するのではなく、Puppeteer をラップして、必要なプラグインのみを登録できるようにします。🦸

puppeteer-extra : Web スクレイピングのセットアップとプラグイン

次のようにして、プロジェクトの 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 、Puppeteer Extra プラグインをプラグインするためのuse()メソッドを公開するようになりました。


これらのプラグインの機能について詳しく調べ、Web スクレイピングのレベルをどう向上させるかを見てみましょう。

パペッティア エクストラ プラグイン ステルス

Puppeteer Extra Plugin Stealth (単に Puppeteer Stealth とも呼ばれる)には、ボット検出を減らすように設計された一連の構成が含まれています。これは、Puppeteer をボットとして公開する可能性のある検出可能なプロパティと設定を上書きします。


詳細については、 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 ブラウザが特定のリソースを読み込まないようにするプラグイン。サポートされているリソース タイプには、 documentstylesheetimagemediafontscripttexttrackxhrfetcheventsourcewebsocketmanifestotherあります。


リソースのブロックは、グローバルとローカルの両方で構成できます。


⚙️インストール:

 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 ユーザー エージェントから'Headless'文字列を削除する機能を提供し、カスタム関数によるユーザー エージェントの動的な置換をサポートします。Puppeteer ユーザー エージェント ガイドで実際の動作を確認してください。


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")}) }))

パペッティアエクストラは万能薬ではない

Playwright の場合と同様に、Puppeteer スクリプトがどれだけ巧妙でカスタマイズされていても、高度なアンチボット システムがそれを検出してシャットダウンすることができます。しかし、どうしてそんなことが可能なのでしょうか? 🤔


puppeteer-extra-stealth-pluginドキュメントでは、次のように詳しく説明されています。

注意: これはかなり興味深い猫とネズミのゲームにおける友好的な競争であると私は考えています。他のチーム (👋) がヘッドレス Chromium を検出したい場合、それを実行する方法はまだあります (少なくとも私はいくつか気づきました。今後のアップデートで対処します)。


ヘッドレス Chromium を検出するすべての方法を防ぐのはおそらく不可能ですが、コストがかかりすぎるほど、または誤検知が多すぎて実現不可能になるほど困難にすることは可能であるはずです。


したがって、Puppeteer Extra は Matrix の Neo のようにほとんどの基本的なボット検出を回避できますが、 Cloudflare を確実にバイパスすることはできません。もちろん、 プロキシを Puppeteer に統合することもできますが、それでも十分ではない可能性があります。


問題は Puppeteer 自体ではなく (実際、Puppeteer は最高です! 🤘)、それが制御しているブラウザです。本当の解決策は? 次のような強力なブラウザです:

  • 通常のブラウザと同様にヘッダーモードで動作し、ボットの検出を減らします。
  • クラウド内でスケーリングすることで、インフラストラクチャ管理の時間とコストを節約します。
  • 市場で最大かつ最も信頼性の高いプロキシ ネットワークの 1 つを搭載したローテーション IP を提供します。
  • CAPTCHA の解決、ブラウザのフィンガープリント、Cookie とヘッダーのカスタマイズ、再試行を自動的に処理して、効率を最適化します。
  • Playwright、Selenium、Puppeteer などの主要なブラウザ自動化ライブラリとシームレスに統合されます。


信じられないかもしれませんが、これは遠い夢ではありません。これは現実であり、まさに Bright Data のScraping Browserが提供できるものなのです。

最後に

Puppeteer は、テクノロジーの世界で最も広く使用されているブラウザ自動化ツールの 1 つですが、スーパーヒーローにも限界があります。コミュニティは、カスタム プラグインを通じて Puppeteer に非常に優れた新機能を追加するパッケージであるpuppeteer-extraを導入しました。


しかし、ここで問題なのは、これらのプラグインはスクレイピング操作をはるかに強力にすることができますが、魔法のようにあなたをゴーストに変えることはできないということです👻。高度なボット検出機能を備えたサイトは、あなたをブロックできる可能性があります。


Bright Data の Scraping Browser を使用すると、すべてのアンチボットを回避できます。これは、 Puppeteer とシームレスに統合される検出不可能なクラウド ブラウザです。自動化されたスクリプトを通じてでも、Web をあらゆる場所のあらゆる人にとっての公共スペースにするという私たちの使命にご参加ください。


次回まで、自由にインターネットを探索し続けてください!🌐