核心用法
Chrome CDP Skill 是一款轻量级浏览器自动化工具,基于 Chrome DevTools Protocol (CDP) 通过原生 WebSocket 与本地 Chrome 家族浏览器(Chrome、Chromium、Brave、Edge、Vivaldi)建立直接通信,无需依赖 Puppeteer 等重型框架。
主要功能覆盖:
- 页面枚举:
list命令列出所有打开的标签页及其 targetId - 视觉捕获:
shot命令截取视口截图,输出含 DPR 信息便于坐标换算 - DOM 操作:
html提取页面/元素源码,snap生成无障碍树快照 - 交互控制:
click/clickxy实现元素或坐标点击,type在焦点处输入文本(支持跨域 iframe) - 脚本执行:
eval运行 JavaScript,evalraw直接透传 CDP 命令 - 页面管理:
nav导航加载,open新建标签页,loadall自动点击"加载更多" - 网络分析:
net获取资源加载时序数据
技术架构上采用 Node.js 22+ 内置 WebSocket 模块,零 npm 依赖安装,单文件 CLI 设计。
显著优点
1. 零依赖轻量化:无需 npm install、Python 或 pip,单 .mjs 文件即可运行,对大型标签页场景性能优于 Puppeteer
2. 原生 CDP 访问:直接 WebSocket 通信,避免抽象层开销,支持 evalraw 透传任意 CDP 命令
3. 跨域 iframe 兼容:type 命令绕过同源策略限制,解决自动化测试中常见的 iframe 输入难题
4. 坐标精确控制:截图输出 DPR 换算提示,适配 Retina 等高分辨率屏幕的像素坐标映射
5. 会话持久化:后台守护进程保持连接 20 分钟,首次授权后免重复确认
潜在缺点与局限性
- 安全门槛高:需手动开启
chrome://inspect/#remote-debugging,首次访问每标签页弹出"允许调试"模态框 - 视口截图限制:
shot仅捕获可见区域,完整页面需先执行滚动脚本 - 选择器脆弱性:官方警告避免基于索引的 DOM 选择(如
querySelectorAll(...)[i]),动态内容易导致选择器漂移 - 无无头模式:必须保持真实浏览器窗口运行,不适合 CI/CD 等纯自动化场景
- 前缀匹配风险:targetId 采用前缀匹配策略,短前缀可能导致误匹配被拒绝
适合人群
- 需要调试本地已打开页面的前端开发者
- 进行浏览器行为分析的安全研究人员
- 希望轻量级替代 Puppeteer 的自动化测试工程师
- 需要操作跨域 iframe 内容的复杂 Web 应用测试人员
常规风险
高权限暴露:该技能可执行 eval、nav、click 等敏感操作,能访问用户已登录的会话、Cookie 及本地存储数据。恶意利用可导致会话劫持、钓鱼页面注入、敏感信息截图泄露。
供应链安全:scripts/cdp.mjs 作为单文件脚本,若被篡改可植入任意浏览器操控代码。建议校验文件哈希后再部署。
调试端口暴露:开启远程调试后,本地端口可能被其他进程探测利用,建议仅在受信任网络环境使用。