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
英文地址,請注明出處:http://en.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;光照不均勻問題如同音頻中的混響…