puppeteer 系列模块的系统性、详细讲解
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 | - | ✅(插件) | 绕过反爬虫检测 |