浏览器 CDP 自动化
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @zcwl/browser-automation-cdp。
技能介绍
解决什么问题
很多抓取任务会卡在三类页面上:完全依赖 JS 渲染的页面(比如 B 站,web_fetch 拿到的只是空壳 HTML)、需要登录态的操作,以及需要点击、填表、滚动的交互流程。CDP(Chrome DevTools Protocol)让自动化工具直接连上用户本机已登录的 Edge 或 Chrome,在真实浏览器里执行任务,天然继承 cookie 和登录状态,不用单独处理鉴权。
核心能力与工作方式
技能通过 WebSocket 与开启远程调试的浏览器通信。浏览器以 remote debugging 模式启动(Edge 默认端口 9222,Chrome 默认端口 9223),之后即可调用一组简洁的命令:
browser.goto(url):导航到指定 URL,等Page.loadEventFired后再补 2 秒给 JS 渲染browser.eval(script):在页面上下文执行 JavaScript 并返回结果browser.click(selector):计算元素中心坐标,用document.elementFromPoint模拟点击,支持任意可点击元素browser.screenshot():截图当前页面,返回 PNG base64,可另存为文件browser.wait(ms):显式等待 JS 渲染或网络请求browser.tabs():列出所有标签页
适用边界与踩坑
不是所有场景都该用它。静态 HTML 页面直接用 web_fetch 即可;有强反自动化检测的站点(如小红书,存在 UA 检测和行为检测)可能直接失败;带签名保护的 API(如 B 站的 wbi 签名)无法绕过,只能走 DOM 提取,且播放量等字段是文本,需要自己 parseInt 清洗。
工程上还有几个实际限制:
- 每个调试端口同一时间只允许一个 WebSocket 连接,任务失败残留连接时需重启浏览器
document.cookie拿不到 HttpOnly cookie,需要完整 cookie 只能读浏览器的 SQLite 文件- Next.js 等 SPA 的内部路由不能直接导航(会 404),需先进一个已知子页面再用 JS 触发跳转
- 调试端口可能被预装软件(如联想 Vantage)占用,得先结束占用进程
使用场景
- 视频运营需要批量读取 B 站首页视频卡片的标题与播放量,用于筛选选题方向
- 开发者想在浏览器已登录的前提下,自动点击 Minimax 侧边栏菜单并提取 Token Plan 剩余配额
- 自动化工程师需要对 JS 渲染的网页执行点击、填表、滚动等交互后截图存档
- 测试人员希望在本地 Edge 调试端口被预装软件占用时,快速恢复浏览器自动化链路
适合人员
- 需要处理 JS 渲染或登录态网页的后端工程师,关注 CDP 连接与页面执行的稳定性
- 负责内容选题与数据整理的运营人员,需要从视频卡片和平台页面提取结构化字段
- 编写自动化脚本并排查浏览器端口、选择器失效等问题的测试与运维工程师
- 在 Next.js 等 SPA 项目中调试页面路由跳转的前端开发者