核心用法
Chrome CDP 是一个轻量级命令行工具,通过 WebSocket 直接连接本地 Chrome 系浏览器(Chrome、Chromium、Brave、Edge、Vivaldi),无需安装 Puppeteer 或 Python 依赖。用户需先在 chrome://inspect/#remote-debugging 开启远程调试,即可通过 cdp.mjs 脚本执行多种浏览器操作。
主要功能
- 页面管理:
list列出所有标签页,open新建标签页,stop停止守护进程 - 内容获取:
shot截图(需注意 DPR 换算)、html获取页面源码、snap获取可访问性树 - 交互操作:
click/clickxy点击元素、type输入文本(支持跨域 iframe)、nav导航跳转 - 脚本执行:
eval执行 JavaScript、evalraw发送原始 CDP 命令 - 批量操作:
loadall自动点击"加载更多"直到消失 - 网络监控:
net获取资源加载耗时
显著优点
1. 零依赖部署:仅需 Node.js 22+,无需 npm install、Python 或 pip
2. 大标签页友好:专为高标签页数量场景优化,性能优于 Puppeteer
3. 原生 CDP 直连:直接 WebSocket 通信,无中间抽象层,延迟更低
4. 跨域 iframe 支持:type 命令可输入跨域 iframe 内容,解决 Puppeteer 常见痛点
5. 坐标自动换算:截图输出包含 DPR 提示,便于像素级精确点击
潜在缺点与局限性
- 手动前置配置:必须用户手动开启 Chrome 远程调试,且首次访问需逐标签批准
- 单浏览器限制:仅支持本地已启动的 Chrome 系浏览器,无法远程或 headless 启动
- 守护进程超时:20 分钟无操作自动退出,长任务需保持活跃
- 截图范围受限:仅捕获视口内容,长页面需先滚动
- 选择器稳定性:DOM 变化会导致索引失效,需用稳定选择器
- 安全警告触发:杀毒软件可能标记
eval、click等强控制命令为可疑
适合人群
- 前端开发者:调试本地已打开的复杂页面,尤其是需要跨域 iframe 交互的场景
- 自动化测试人员:需要轻量级浏览器控制,不愿引入 Puppeteer 重型依赖
- 性能分析者:通过
net命令快速获取资源加载时序 - 多标签页用户:日常保持数十个标签页开启,需要高效遍历管理
常规风险
- 敏感数据暴露:可读取用户已登录页面的内容,包括 Cookie、本地存储等
- 误操作风险:
eval、nav、click等命令可直接改变页面状态或触发支付 - 钓鱼利用:若用户被诱导开启远程调试,攻击者可本地连接窃取会话
- 权限持久化:后台守护进程保持调试会话,期间页面无额外授权提示
- 跨站脚本:
eval执行任意 JavaScript,需确保表达式来源可信