Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器clawhub未标认证来源可访问clear审计提醒

browser-automation-cdp浏览器自动化 CDP

Agent Skill

browser-automation-cdp 用于处理浏览器自动化、网页检查和页面信息提取,适合在 OpenClaw 中需要让 Agent 打开页面、读取网页或验证前端流程时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

71,540

周安装

2,894

GitHub Stars

1

下载量

22,457
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:browser-automation-cdp(浏览器自动化 CDP)
来源仓库:https://github.com/hunling233/browser-automation-cdp
安装命令:
openclaw skills install browser-automation-cdp
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install browser-automation-cdp

简介

通过已登录的Edge或Chrome浏览器,利用Chrome DevTools协议执行JS渲染页面的导航、点击、截图及数据等自动化操作。

SKILL.md

Browser Automation Skill

通过用户已登录的浏览器(Edge/Chrome)执行自动化任务。 核心技术:CDP(Chrome DevTools Protocol),通过 WebSocket 与浏览器通信。

何时使用

优先用 web_fetch。以下情况才需要 CDP 自动化:

场景是否需要 CDP
静态 HTML 页面web_fetch 即可
JS 渲染的页面(如 B站)✅ 需要
需要登录态的网站(已登录在你的浏览器里)✅ 需要
需要交互(点击、填表、滚动)✅ 需要
网站有反爬/风控⚠️ 可能失败

架构概览

Agent(我)
    ↓ require('./cdp-automation.js')
cdp-automation.js(连接管理器 + 浏览器抽象类)
    ↓ WebSocket (HTTP → CDP)
用户 Windows 浏览器(Edge:9222 / Chrome:9223)
    ↓ 执行 JS / 读 DOM / 点击
目标网站(bilibili / 小红书 / Minimax 等)

快速开始

1. 确保浏览器 remote debugging 已开启

Edge(端口 9222):

# 方式 A:用你日常的 Edge(推荐,已登录)
taskkill /F /IM msedge.exe /T
Start-Sleep 3
Start-Process "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --remote-debugging-port=9222

# 方式 B:用独立 profile(不影响日常浏览)
Start-Process "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --remote-debugging-port=9222 --user-data-dir="C:\OpenClawBrowser\Edge"

Chrome(端口 9223):

Start-Process "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9223

2. 在任务中调用

const { edge, chrome } = require('./browser-automation/cdp-automation.js');

// 基础用法
await edge.goto('https://目标网站.com');
const data = await edge.eval(`document.title`);

// 点击 + 等待 + 提取
await edge.click('[class*="radio-filter__item"]');  // CSS 选择器
await edge.wait(5000);  // 等待 JS 渲染
const result = await edge.eval(`提取数据的 JS `);

// 截图
const png = await edge.screenshot();  // 返回 base64

API 参考

browser.goto(url)

导航到指定 URL,等待页面加载完成(Page.loadEventFired + 额外 2s 等待 JS 渲染)。

await edge.goto('https://space.bilibili.com/151190274/video');

browser.eval(script)

在页面上下文执行 JavaScript,返回结果。

// 读取 DOM
const r = await edge.eval(`document.title`);
console.log(r.result.value);

// 提取结构化数据
const r = await edge.eval(`
    JSON.stringify(
        Array.from(document.querySelectorAll('.upload-video-card')).slice(0,5).map(c => ({
            title: c.querySelector('.bili-video-card__title')?.innerText,
            play: c.querySelector('.bili-cover-card__stat span')?.innerText
        }))
    )
`);
const videos = JSON.parse(r.result.value);

browser.click(selector)

点击匹配选择器的第一个元素。通过计算元素中心坐标后用 document.elementFromPoint 模拟点击,支持任何可点击元素。

await edge.click('[class*="radio-filter__item"]');  // 点击"最多播放"tab

browser.screenshot()

截图当前页面,返回 PNG base64 字符串。可选保存到文件:

const png = await edge.screenshot();
require('fs').writeFileSync('/tmp/screenshot.png', Buffer.from(png, 'base64'));

browser.wait(ms)

显式等待,用于等待 JS 渲染或网络请求。

await edge.click('.next-page');
await edge.wait(3000);  // 等待翻页后内容加载

browser.tabs()

获取所有标签页列表(不含临时 JS 上下文)。

const tabs = await edge.tabs();
const bTab = tabs.find(t => t.url.includes('bilibili.com'));

平台踩坑经验

B站

选择器(2025年有效):

  • 视频卡片:.upload-video-card
  • 标题:.bili-video-card__title
  • 播放量:.bili-cover-card__stat span(第一个 span)
  • "最多播放" tab:[class*="radio-filter__item"],文字为"最多播放"

重要:

  • B站页面完全 JS 渲染,web_fetch 拿到的是空壳
  • 播放量字段在 DOM 里是文本(如"1890"),不是数字
  • 排序需要 JS 端做:parseInt(play.replace(/\D/g,''))
  • API 有 wbi 签名保护,直接调 API 不可行,必须走 DOM

小红书(Xiaohongshu)

注意:

  • 有强反自动化检测(UA 检测、行为检测)
  • 建议先测试是否能正常浏览,再尝试自动化
  • 选择器可能随时变,建议先 eval 探索DOM结构

处理方式:

// 先探索页面结构
const r = await xhs.eval(`
    JSON.stringify({
        title: document.title,
        samples: Array.from(document.querySelectorAll('[class*="note"]')).slice(0,3).map(x => ({
            text: x.innerText?.substring(0,100),
            class: x.className?.substring(0,60)
        }))
    })
`);
console.log(JSON.parse(r.result.value));

Minimax(平台:platform.minimaxi.com)

查询目标: Token Plan 配额(每 5 小时重置)

关键路径(已验证):

  1. 先导航到任意 minimaxi 页面(需是 type=page 的标签页)
  2. 再导航到 /user-center/basic-information(可正常访问)
  3. 用 JS 点击侧边栏的 div(注意:不是 <a> 标签):
   // 找到并点击"Token Plan"菜单项
   const r = await edge.eval(`
     (function() {
       var allDivs = document.querySelectorAll('div');
       for (var d of allDivs) {
         if (d.innerText && d.innerText.trim() === 'Token Plan' && d.className.includes('cursor-pointer')) {
           d.click();
           return 'clicked';
         }
       }
       return 'not found';
     })()
   `);
  1. 等待页面跳转后,提取配额数据

实际路径规律(Next.js SPA):

  • 账户管理侧边栏是 SPA 内部路由,URL 最终为 /user-center/payment/token-plan
  • 直接 Page.navigate/user-center/token-plan 会 404
  • 正确做法:先进 /user-center/basic-information,再 JS 点击触发路由跳转

配额数据所在位置(2026-03 验证):

  • 套餐名:Token Plan / Starter年度套餐
  • 剩余量:可用额度:XXX次模型调用 / 5小时
  • 已用量:XXX/600
  • 重置倒计时:页面显示

示例提取脚本:

// 已在 basic-information 页面,点击 Token Plan 后执行:
const r = await edge.eval(`(function(){
  var t = document.body.innerText;
  // 提取套餐信息
  var plan = t.match(/(Starter|Pro|Enterprise)[^\\
]*/)?.[0];
  var quota = t.match(/可用额度[::][^\\
]*/)?.[0];
  var used = t.match(/(\\d+)\\/600/)?.[0];
  return JSON.stringify({plan, quota, used});
})()`);

已知限制

CDP 连接复用问题

同一时间每个端口(9222/9223)只能有一个 WebSocket 连接。模块内部通过 ConnectionManager 管理,如果任务中途失败导致连接残留,需要重启浏览器 remote debugging。

等待时间不够

B站等 JS 密集型页面有时 5s 不够,可以手动加到 8-10s:

await edge.wait(8000);

Edge 被联想 Vantage 占用端口

如果 Edge 调试端口被联想预装软件(msedgewebview2.exe)的实例占用:

  1. 杀掉 Vantage 服务:taskkill /F /PID <pid>
  2. 再启动你的日常 Edge

HTTP-only Cookie

document.cookie 拿不到 HttpOnly cookie。如果需要完整 cookie,考虑从浏览器文件直接读取 SQLite(需解决锁文件问题)。

Next.js SPA 内部导航

有些页面(如 Minimax)使用 Next.js SPA 路由:

  • 直接 Page.navigate/user-center/token-plan 返回 404
  • 需要先进一个已知可用的子页面(如 /user-center/basic-information),再用 JS 触发 div 点击来执行内部路由跳转
  • 侧边栏菜单项大多是 <div cursor-pointer> 而非 <a>,不能用 CDP Input.dispatchMouseEvent,必须用 JS element.click()

模块文件位置

~/.openclaw/browser-automation/
├── cdp-automation.js   ← 核心模块(不用动)
└── SKILL.md           ← 本文件

调用时:

const { edge, chrome } = require('~/.openclaw/browser-automation/cdp-automation.js');

*最后更新:2026-03-24* *踩坑:B站选择器 / Edge 端口占用 / CDP 连接复用 / Minimax SPA 导航 / div 菜单点击*

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

76.86%
按下载量换算17,260

安全审计

VirusTotal

可疑

ClawScan

可疑

Static analysis

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills