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.pswp.cn/bicheng/91104.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang实现一个规则引擎,功能包括实时增加、修改、删除规则

以下是一个用 Go 实现的轻量级规则引擎,支持实时增加、修改、删除规则,并基于表达式评估触发规则动作: package mainimport ("errors""fmt""sync" )// Rule 定义规则结构体 type Rule struct {ID string // 规则唯一标…

算法训练营day34 动态规划② 62.不同路径、63. 不同路径 II、343整数拆分、96.不同的二叉搜索树

动态规划的第二篇博客!进阶题目,有一说一,尤其最后一道题,真的难想到这种解法 找规律!!! 62.不同路径 注意本题是路径不是路程!!! 动态规划 确定dp数组&am…

Spring 5 事务详解

一、核心使用方式声明式事务(推荐)通过 Transactional 注解实现,需配合配置启用:Configuration EnableTransactionManagement public class AppConfig {Beanpublic PlatformTransactionManager txManager(DataSource dataSource) …

[ctfshow web入门]web99 in_array的弱比较漏洞

信息收集 array_push(array, value):向数组最后的位置插入value in_array(value, array, type):其中value是要查找的值,array是需要查找的的数组,type是查找的类型,如果没有指定类型,则以弱比较方式查找 i…

mysql5.6 常用查询sql

mysql5.6 常用查询sql 文章目录 mysql5.6 常用查询sql 1.查询版本 2.MySQL 运行状态(Ping) 3.慢查询数量 4.连接数 5.最大连接数 6.InnoDB 缓冲池命中率 7.表锁等待次数 8.二进制日志状态 9.表空间使用率 10.查询缓存效率 11.每次自动扩展空间大小 12.导入导出 ✅ 一、导出(…

【在Unity游戏开发中Dictionary、List介绍】

在Unity游戏开发中&#xff0c;Dictionary和List是最核心的两种数据结构&#xff0c;它们各自有优势和应用场景。以下是介绍&#xff1a;&#x1f9e0; 数据结构本质对比特性Dictionary<TKey, TValue>List底层结构哈希表&#xff08;Hash Table&#xff09;动态数组&…

windows平台计划任务批处理实现定时任务

无限循环加定时延时计划任务用户登录执行一次下文中300代表300秒执行一次第2,3,4行为vbs隐藏窗口C:\me\corn\test.batecho off if "%1""hide" goto CmdBegin start mshta vbscript:createobject("wscript.shell").run("""%~0&quo…

深入理解 TCP 协议:从原理到实践的技术解析

目录 一、TCP 协议的核心定位与特性 1.1 协议栈中的位置 1.2 五大核心特性 二、TCP 连接建立与终止的底层逻辑 2.1 三次握手&#xff08;连接建立&#xff09; 2.2 四次挥手&#xff08;连接终止&#xff09; 三、TCP 可靠传输的核心机制 3.1 序列号与确认机制 3.2 滑…

JAVA后端开发——“全量同步”和“增量同步”

“全量同步”和“增量同步”是数据处理、系统集成和数据库领域中两个基本概念。描述了两种截然不同的数据同步策略&#xff0c;理解它们的区别对于设计任何数据系统都至关重要。全量同步 核心思想&#xff1a;全部替换&#xff0c;一步到位。在技术上&#xff0c;全量同步通常意…

修改CentOS的SSH登录端口(22端口)

要修改CentOS系统的SSH服务默认端口(22端口)&#xff0c;请按照以下步骤操作&#xff1a; 备份SSH配置文件 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak编辑SSH配置文件 sudo vi /etc/ssh/sshd_config查找并修改端口设置 找到以下行(大约在第13行左右)&#xff1a;…

python导包机制-更优方式

在学习某个大模型应用的后端时&#xff0c;发现&#xff1a; xxx |-----src |------\---modules |------\------\------b.py |-----app.py在app.py中可以使用src.modules.b来进行导入。之前我导入时是形如.modules.b这种形式&#xff08;前面有.&#xff09;&#xff0c;但是当…

检索召回率优化探究一:基于 LangChain 0.3集成 Milvus 2.5向量数据库构建的智能问答系统

背景 基于 LangChain 0.3集成 Milvus 2.5向量数据库构建的 NFRA&#xff08;National Financial Regulatory Administration&#xff0c;国家金融监督管理总局&#xff09;政策法规智能问答系统&#xff0c;第一个版本的检索召回率是 79.52%&#xff0c;尚未达到良好、甚至是优…

《整合Spring Cache:本地缓存、Redis与Caffeine对比实践》

&#x1f680; 整合Spring Cache&#xff1a;本地缓存、Redis与Caffeine对比实践 &#x1f4cc; 前言 在高并发、高性能的系统设计中&#xff0c;缓存始终扮演着不可替代的角色。Spring Cache 作为 Spring 框架原生提供的缓存抽象层&#xff0c;极大简化了缓存接入的复杂度。…

easyexcel填充方式导出-合并单元格并设置边框

填充的模板最后导出效果实体 /*** 账户实体类* author test* date 2025-07-28*/ Getter Setter class Test {/*** 账户类型*/private String accType;/*** 账户余额*/private String money; }导出逻辑 /*** 导出文件逻辑*/ public void exportReport(List<Test> data) { …

Jenkins + SonarQube 从原理到实战一:基于 K8s 部署与使用(含中文插件与 Python 扫描)

前言 公司开发部门希望在 Jenkins 构建过程中自动集成 C/C 的代码扫描&#xff0c;正好我也没接触过 SonarQube&#xff0c;于是记录下从零开始部署 SonarQube 服务并集成到 CI/CD 的过程&#xff0c;供后来者参考。 一、SonarQube 原理与工作机制详解 1.1 什么是 SonarQube&…

Linux(Centos 7.6)命令详解:sz

1.命令作用使用ZMODEM/YMODEM/XMODEM协议发送文件(Send file(s) with ZMODEM/YMODEM/XMODEM protocol)注意: 需要yum install lrzsz (yum provides sz可以查看rz命令是什么rpm包提供的)2.命令语法Usage: sz [options] file ...or: sz [options] -{c|i} COMMAND3.参数详解OPTION…

智能运维中的数据转换

《智能运维实践 苏娜 孙琳 王鸽著 人工智能技术丛书 自然语言处理的常用算法 日志异常检测 根因定位 网络流量异常检测 清华大学出版社》【摘要 书评 试读】- 京东图书 数据转换是数据预处理中的关键步骤&#xff0c;用于将数据从原始格式转换为适合分析和建模的形式。这一过程…

IAR编辑器如何让左侧的工具栏显示出来?

在IAR编辑器中恢复左侧工具栏显示&#xff0c;可通过以下方法操作&#xff1a; 一、通过菜单栏启用工具栏 ‌进入视图菜单‌ 点击顶部菜单栏的 ‌"View"‌ → 在弹出列表中勾选 ‌"Workspace"‌ 若工具栏仍不显示&#xff0c;查看菜单栏右侧是否有 ‌"…

ADB+Python控制(有线/无线) Scrcpy+按键映射(推荐)

要实现电脑通过键盘控制安卓平板屏幕点击的功能&#xff0c;可以采用以下方案&#xff1a; 方案一&#xff1a;ADBPython控制&#xff08;有线/无线&#xff09; 准备工具&#xff1a; 安卓平板开启开发者模式&#xff08;设置→关于平板→连续点击版本号&#xff09;启用USB调…

同态滤波算法详解:基于频域变换的光照不均匀校正

&#x1f3ad; 同态滤波&#xff1a;图像频域的调音师技术“如同调音师在音频处理中分离并调节不同频率成分&#xff0c;同态滤波能够在图像频域中精确分离光照与细节信息。”&#x1f3af; 图像频域调音的技术挑战 在数字图像处理中&#xff0c;光照不均匀问题如同音频中的混响…