puppeteer 系列模塊的系統性、詳細講解
🧩 一、核心模塊介紹
1. puppeteer
全功能 Puppeteer 包,默認包含 Chromium 瀏覽器
npm install puppeteer
- 包含內容:Puppeteer API + Chromium 瀏覽器
- 適合場景:
- 想直接運行,不關心瀏覽器版本(直接附帶一個穩定 Chromium)
- 本地開發、調試用
- 缺點:
- 體積大(100M+)
- 安裝慢,尤其在 CI/CD、國內網絡中不便
2. puppeteer-core
輕量版 Puppeteer,不包含 Chromium
npm install puppeteer-core
- 只包含 API:必須手動指定或連接已有的瀏覽器
- 適合場景:
- 想使用自定義瀏覽器版本(如 Chrome 穩定版)
- 避免重復下載瀏覽器(節省磁盤與網絡)
- 常配合:
const browser = await puppeteer.launch({executablePath: '/path/to/your/chrome'
});
3. puppeteer-extra
用于增強 Puppeteer 功能的框架包
npm install puppeteer-extra
-
基于 puppeteer-core 封裝
-
提供插件機制:可加載多個插件增強能力
-
常見插件:
puppeteer-extra-plugin-stealth
:防止被識別為自動化腳本puppeteer-extra-plugin-adblocker
:廣告屏蔽器
-
使用方式
const puppeteer = require('puppeteer-extra');
puppeteer.use(require('puppeteer-extra-plugin-stealth')());
-
? 優勢:
- 插件機制靈活
- 安裝更輕量(和 puppeteer-core 結合)
4. puppeteer-extra-plugin-stealth
用于繞過反爬蟲檢測的核心插件
npm install puppeteer-extra-plugin-stealth
- 繞過檢測能力(以下是它覆蓋的一些特征):
目標特征 | 描述 |
---|---|
navigator.webdriver | 設置為 false |
Chrome headless userAgent 字樣 | 偽裝為正常 Chrome |
permissions API | 偽裝為正常用戶行為 |
plugins 和 mimeTypes | 模擬真實插件 |
WebGL 偽裝 | 防 Canvas 指紋識別 |
iframe 偽裝 | 兼容 iframe 中加載 |
navigator.languages | 正常語言環境模擬 |
navigator.hardwareConcurrency | 多核模擬(默認 4、8) |
- 使用方法
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');puppeteer.use(StealthPlugin());const browser = await puppeteer.launch({headless: false
});
📦 二、推薦組合使用方式
應用場景 | 推薦組合 | 示例 |
---|---|---|
本地快速開發 | puppeteer + puppeteer-extra | 用內置 Chromium,省事 |
自定義瀏覽器版本 | puppeteer-core + puppeteer-extra | 使用真實 Chrome 路徑 |
抗檢測爬蟲 | puppeteer-core + puppeteer-extra + stealth | 最穩定最安全方案 |
示例:抗檢測穩定組合
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());(async () => {const browser = await puppeteer.launch({headless: false,executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', // 你的 Chrome 安裝路徑args: ['--no-sandbox', '--disable-blink-features=AutomationControlled']});const page = await browser.newPage();await page.goto('https://www.google.com');
})();
🧠 三、常見問題與建議
問題 | 建議 |
---|---|
下載速度慢 | 使用 puppeteer-core ,自帶瀏覽器改為本地 |
網站識別自動化腳本 | 使用 puppeteer-extra + stealth |
頁面報錯:navigator.webdriver = true | 開啟 stealth 插件會自動處理 |
Chrome 安裝路徑如何獲取? | 手動在系統中查看,或用 chrome://version 頁面復制 |
Mac/Linux 也能用嗎? | 可以,注意路徑為 /Applications/.../Google Chrome 等 |
? 總結
名稱 | 是否帶瀏覽器 | 是否支持插件 | 適用場景 |
---|---|---|---|
puppeteer | ? | ? | 快速開發 |
puppeteer-core | ? | ?(需要手動集成) | 自定義瀏覽器 |
puppeteer-extra | ? | ? | 插件化抗檢測 |
puppeteer-extra-plugin-stealth | - | ?(插件) | 繞過反爬蟲檢測 |