当前位置: 首页 > news >正文

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伪装为正常用户行为
pluginsmimeTypes模拟真实插件
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-✅(插件)绕过反爬虫检测
http://www.dtcms.com/a/302561.html

相关文章:

  • Ubuntu系统完整配置教程
  • InfluxDB 与 HTTP 协议交互进阶(一)
  • 设计模式实战:自定义SpringIOC(理论分析)
  • 无界设计新生态:Penpot开源平台与cpolar的云端协同创新实践
  • 第二十二节 MATLAB转置向量、MATLAB追加向量
  • C++---初始化列表(initializer_list)
  • 基于黑马教程——微服务架构解析(二):雪崩防护+分布式事务
  • 使用 nvm (Node Version Manager) 来管理多个 Node.js 版本,并自由切换
  • OCR 赋能合同抽取:不良资产管理公司的效率加速器
  • 常见的接⼝测试⾯试题
  • 图像识别边缘算法
  • 从矩阵表示到卷积神经网络(CNN)与循环神经网络(RNN)
  • MCP error -32000: Connection closed
  • 基于开源AI智能名片链动2+1模式与S2B2C商城小程序的微商品牌规范化运营研究
  • mxn矩阵学习笔记
  • 使用Python制造扫雷游戏
  • Marc 非线性仿真复杂,企业如何保障许可证公平与高效使用?
  • (AC)储值购物
  • Android中主线程、ActivityThread、ApplicationThread的区别
  • 【氮化镓】GaN同质外延p-i-n二极管中星形与三角形扩展表面缺陷的电子特性
  • Python 实现服务器自动故障处理工具:从监控到自愈的完整方案
  • 日志分析-windows日志分析base--笔记ing
  • lesson26-2:使用Tkinter打造简易画图软件优化版
  • 深入解析MIPI C-PHY (五) MIPI C-PHY 与 A-PHY 的对比分析
  • 重生之我在暑假学习微服务第三天《Docker-上篇》
  • 【Unity笔记】Unity Camera.cullingMask 使用指南:Layer 精准控制、XR 多视图与性能提升
  • ERC20 和 XCM Precompile|详解背后技术逻辑
  • 学习Python中Selenium模块的基本用法(2:下载浏览器驱动)
  • js的学习2
  • JavaScript:数组常用操作方法的总结表格