n8n自动化实战:Chrome调试模式与Puppeteer节点全解析 @ 胡巴 | 星期六,六月 7 日,2025 年 | 5 分钟阅读 | 更新于 星期六,六月 7 日,2025 年

n8n自动化实战:Chrome调试模式与Puppeteer节点全解析

在自动化测试、网页抓取、数据采集等场景中,Puppeteer凭借其强大的浏览器自动化能力成为开发者的利器。而n8n作为可视化自动化平台,通过Puppeteer节点可以无缝集成浏览器操作。但要让n8n的Puppeteer节点真正"驱动"本地Chrome浏览器,首先需要启动Chrome的远程调试模式。本文将手把手教你如何配置,并详细解读一个简单的n8n-puppeteer工作流。

本文内容需要安装社区节点 n8n-nodes-puppeteer,忘记怎么安装的小伙伴可以参考文章:n8n之初识社区节点:让你的n8n会的更多

一、Chrome调试模式启动指南

Puppeteer默认会自动下载并使用自带的Chromium,但是由于n8n官方docker镜像中没有Puppeteer所需的环境,所以我们需要给它设置一个外部浏览器执行环境,本篇文章使用的是本地Chrome浏览器的调试模式,其他方案可以参考文档n8n-nodes-puppeteer。只需一条命令即可开启Chrome的调试环境:

"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --remote-debugging-address=0.0.0.0 --user-data-dir="C:\chrome-remote-profile"
  • --remote-debugging-port=9222:指定调试端口。
  • --remote-debugging-address=0.0.0.0:允许外部主机访问(如Docker容器内的n8n)。
  • --user-data-dir:指定用户数据目录,避免与日常浏览器配置冲突。

注意:首次运行会自动创建C:\chrome-remote-profile目录。

Chrome调试模式命令行截图占位

注意:命令中chrome浏览器可执行文件的位置需要自行替换。

执行命令后弹出可调试窗口

获取Puppeteer所需的ws地址

Chrome调试模式启动后,访问 http://localhost:9222/json/version 即可获取WebSocket调试地址(webSocketDebuggerUrl),如:

ws://localhost:9222/devtools/browser/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

n8n的Puppeteer节点只需将此地址填入browserWSEndpoint参数即可。

ws地址获取页面截图占位

注意:这个调试地址在填入docker中的puppeteer节点时,需要把localhost替换为host.docker.internal

二、puppeteer.json工作流详解

工作流整体截图

本工作流通过n8n的Puppeteer节点,实现了对百度首页的多种自动化操作,包括内容抓取、PDF导出、截图和性能监控。下面逐一解析各节点功能:

1. 触发器节点

  • When clicking ‘Test workflow’:手动触发整个流程,便于调试和演示。

2. 获取百度首页内容

  • 获取百度首页内容:通过Puppeteer节点访问 https://www.baidu.com/,可用于后续自定义脚本或数据提取。

获取百度首页内容

3. 导出PDF

  • 获取百度首页pdf:将百度首页渲染为PDF,结果存储在baidu_pdf_data属性。
  • Read/Write Files from Disk:将PDF文件写入本地磁盘,路径为/home/working/baidu_pdf_data.pdf

4. 截图功能

  • 获取百度首页快照:对百度首页进行全页截图,结果存储在baidu_home_screenshoot属性。
  • Read/Write Files from Disk1:将截图保存为/home/working/baidu_home_screenshoot.png

截图功能与抓取PDF功能类似,这里不再赘述。

5. 性能监控脚本

  • 一个简单的网页性能监控:自定义Puppeteer脚本,采集页面Performance Timing指标和资源加载统计,输出关键性能数据和前5个耗时资源。

n8n puppeteer网页性能监控指标获取

有了这份指标数据,就可以结合其他节点来对网页性能进行监控了,例如:可以将数据信息整合到ES或Prometheus做成监控图标再增加适当告警。

监控脚本代码

await $page.goto('https://www.baidu.com', {waitUntil: 'networkidle2'})

// 获取 Performance Timing 指标
const perfTiming = await $page.evaluate(() => {
  const timing = performance.timing;
  return {
      navigationStart: timing.navigationStart,
      domContentLoaded: timing.domContentLoadedEventEnd,
      loadEventEnd: timing.loadEventEnd,
      responseEnd: timing.responseEnd,
      fetchStart: timing.fetchStart,
      domInteractive: timing.domInteractive,
      // 计算常用耗时
      domContentLoadedTime: timing.domContentLoadedEventEnd - timing.navigationStart,
      loadTime: timing.loadEventEnd - timing.navigationStart,
      responseTime: timing.responseEnd - timing.fetchStart,
      domInteractiveTime: timing.domInteractive - timing.navigationStart,
    };
})

// 获取所有资源请求信息
const resources = await $page.evaluate(() =>
  performance.getEntriesByType('resource').map(r => ({
    name: r.name,
    type: r.initiatorType,
    duration: r.duration,
    size: r.transferSize || 0,
  }))
);

// 输出性能数据
console.log('百度首页性能指标:');
console.log(perfTiming);

console.log('\n资源请求统计:');
console.log(`总资源数:${resources.length}`);
const totalSize = resources.reduce((sum, r) => sum + r.size, 0);
console.log(`总资源大小:${(totalSize / 1024).toFixed(2)} KB`);

// 可选:输出前 5 个耗时最长的资源
const top5 = resources.sort((a, b) => b.duration - a.duration).slice(0, 5);
console.log('\n耗时最长的 5 个资源:');
top5.forEach((r, i) => {
  console.log(`${i + 1}. ${r.name} - ${r.duration.toFixed(2)} ms, ${(r.size / 1024).toFixed(2)} KB`);
});

return [{"perfTiming": perfTiming, "totalSize": totalSize, "top5": top5}]

6. 节点连接关系

  • 手动触发器同时启动内容抓取、PDF导出、截图和性能监控。
  • PDF和截图节点分别与本地文件写入节点连接,实现自动保存。

三、实用建议与常见问题

  • 端口冲突:如9222端口被占用,可更换为其他端口,但需同步修改Puppeteer节点配置。
  • Docker环境:如n8n运行在Docker中,browserWSEndpoint应指向宿主机(如host.docker.internal)。
  • 权限问题:确保Chrome和n8n有足够的文件读写权限。

四、总结

通过Chrome调试模式与n8n的Puppeteer节点结合,你可以轻松实现浏览器级的自动化操作,无论是网页抓取、内容导出还是性能监控,都能一站式完成。希望本文能帮助你快速上手并玩转n8n自动化!

五、往期推荐

  1. n8n实战之初试牛刀:第一个简单工作流
  2. n8n实战之初出茅庐:让AI帮你审代码!N8N+GitLab+Deepseek 自动化智能评审全流程实战
  3. AI不再健忘!n8n实现大模型多轮记忆力的实用技巧
  4. n8n实战之初露锋芒: 为我打工的数据查询助手
  5. 初识n8n节点之 n8n Form Trigger

工作流下载地址:https://hubawechat.oss-cn-hangzhou.aliyuncs.com/puppeteer.json

捐赠

感谢老板请我喝杯咖啡!Thank you for buying me a coffee!

WeChat AliPay PayPal
wechatpay alipay PayPal

公众号: 无限递归

alt 搜索公众号:无限递归

Copyright © 2017 - 2025 boboidea.com All Rights Reserved 波波创意软件工作室 版权所有 【转载请注明出处】

avatar

BoBo`s Blog每天进步一点点,能多一点是一点

appdata apt-get bloomfilter channel Chatbot ChatGPT Chrome chsh ClickHouse Context css csv CUDA Cursor DaDa英语 Deepseek defer df docker elasticsearch error ffmpeg fix-missing form gif git GitLab globalproject golang hosts HTTP HTTPS iconv IDE Interface iota Kafka LangChain libssl LLM ln mac mac系统更新 Map MCP MetaMCP mkdir MSYS2 mysql n8n nginx oh-my-zsh Ollama openconnect openssl PAM permission php pip PowerShell puppeteer python rabbitmq redis reflect rsync SD sed shell Slice snowflake space SQL SSH struct syntax_err tensorflow ubuntu ue4 unauthorized unreal4 UV vim virtualbox vpn VSCode Windows x86_64 xcode-select YCM zookeeper zsh 上海积分 主从复制 事务 二进制安全 交叉熵 人力资源 代码工具 代码编辑助手 代码评审 以太坊 信息论 全民哀悼 内存管理 内容创作 分屏 分支删除 区块链 匿名函数 协作系统 协议设计 启动盘 品种 图片转视频 均线 夏天 夏季 实用技巧 密码修改 工作流 工作流触发 工具 工具管理 开发工具 开发环境 循环 微信公众号 批处理 批量处理 批量替换 批量重命名 接收器 效率工具 教程 数据分析 数据合并 数据处理 数据查询 数据类型 数据结构 数据聚合 数据转换 文件同步 文件管理 日志切分 智能体 智能合约 替代方案 本地部署 概率论 比特币 水果 治疗 流量分析 浏览器调试 消息队列 版本控制 狗狗币 生活 用户行为 电视 症状 磁盘清理 笔记本技巧 系统配置 编程语言 编译PHP 编辑器 网站统计 网络 自动化 自动化工作流 自动提交 节点 获取方式 虚拟机 西瓜 记忆 购买指南 跨平台 软连接 运维技巧 闭包 集成 雪花算法 面瘫 鞋子 项目无法编译
基本信息
  • 姓名:bobo
  • 花名:胡巴
  • 性别:男
  • 血型:O型
  • 星座:白羊座

联系方式

  • 所在地:上海
  • QQ:279250819
  • 微信号:wanghuiwoshinideyou
  • 电子邮件:279250819@qq.com

博客地址

公众号

alt 无限递归

工作经历
  • 2022.5 - 至今

    • 公司:乐府互娱
    • 职位:高级SDK工程师
  • 2019.6 - 2022.4

    • 公司:萌推(上海突进网络科技有限公司)
    • 职位:中级PHP工程师 & 初级golang工程师
    • 荣誉:
      • 绩效A连续得主
      • 月度之星
      • 优秀个人奖
    • 所作所为:
      • 利用ES优化OMS、MMS管理系统商品列表查询
      • 利用消息队列、Redis、乐观锁优化商品审核流程
      • 利用Redis对商家端接口进行有效限流
      • 优化商品相关表索引,提升SQL查询速度
      • 商品中台构建,统一商品相关操作
      • 大表优化(数据分离、分表、大字段拆分)
      • 掌握所有商品核心流程
  • 2018.5 - 2019.5

    • 公司:DaDa英语(上海卓赞教育信息科技有限公司)
    • 职位:中级PHP开发工程师
    • 荣誉:无
    • 所作所为:
      • 利用ES优化教师CMS系统统计数据接口至500ms内
      • 工单系统开发及持续优化
      • 教师CMS系统的功能开发及持续优化
  • 2018.3 - 2018.5

    • 公司:波奇(上海)信息科技有限公司
    • 职位:初级PHP开发工程师
    • 荣誉:同下
    • 所做作为:如下
  • 2016.7 - 2018.3

    • 公司:光橙(上海)信息科技有限公司
    • 职位:初级PHP开发工程师
    • 荣誉:
      • 年度最佳进步奖
    • 所作所为:
      • 利用Redis提升商详接口最佳响应速度至50ms内
      • 利用Redis提升双11活动页可承受QPS至500以上
      • 利用Redis对接口进行简单限流
      • 与小伙伴合作提升搜索质量(ES初识)
      • 其他C端接口的开发及优化
      • B端商城老页面的维护及优化
SKILLS

编程语言

  • PHP
  • Golang
  • Shell
  • JAVA
  • JS
  • HTML\CSS

数据库

  • MySQL
  • Redis
  • Clickhouse

消息中间件

  • RabbitMq
  • Kafka

文档撰写

  • Swagger
  • Markdown

技术框架

  • Laravel
  • gin

搜索引擎

  • ElasticSearch

抓包工具

  • Charles