mcpField
W
web-browser

web-browser

github.com/mitsuhikoAgent 工作流3.2k677 次安装4 周前更新
代码仓库

关于 web-browser

web-browser 是面向 Agent 的轻量 CDP 浏览技能,用于协作探索网站。它提供 Chrome 控制能力,涵盖页面导航、JavaScript 执行、截图、设备模拟和浏览器日志。

主要功能

  1. 01启动无头或可视 Chrome
  2. 02导航标签页和网页
  3. 03在当前标签页执行 JavaScript
  4. 04截取视口或整页截图
  5. 05模拟移动设备
  6. 06收集控制台、错误和网络日志

适用场景

  1. 01检查网页内容和链接
  2. 02在移动视口下检查网站
  3. 03截图并查看浏览器错误

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mitsuhiko/agent-stuff --skill web-browser

安装后在 Claude Code 中输入/web-browser确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
browser-processes.js
browser-processes.test.js
cdp.js
devices.js
dismiss-cookies.js
emulate.js
emulation-state.js
eval.js
logs-tail.js
nav.js
net-summary.js
package-lock.json
package.json
pick.js
screenshot.js
start.js
stop.js
watch.js

详细介绍

Web Browser Skill

用于协作式网站探索的精简 CDP 工具。

启动 Chrome(优先使用无头模式)

./scripts/start.js --headless            # Recommended: isolated reusable profile
./scripts/start.js --headless --profile  # Headless with a copy of your profile
./scripts/start.js                       # Visible browser window when needed
./scripts/start.js --headless --reset-profile  # Clear cached profile before launch

启动带有远程调试功能的 Chrome(默认端口为 :9222)。Agent 默认应使用 --headless,因为这种模式干扰较少,并支持导航、求值、截图、模拟和日志记录。无头模式启动时会禁用用户扩展;复制的配置文件仍会提供 Cookie 和其他浏览器状态,但无法使用基于扩展的功能。有头模式启动时会照常加载扩展。只有在需要让用户查看或操作浏览器时,才使用有头模式,例如运行 pick.js、手动进行身份验证,或调试仅在无头模式下出现的差异。

启动脚本只有在配置文件和启动设置匹配时,才会复用正在运行的浏览器。在无头模式和有头模式之间切换前,请先停止正在运行的 Skill 浏览器。更改调试端口不会隔离配置文件:如果某个端口上的配置文件已在使用中,启动时会拒绝修改该配置文件,并保留 Chrome 的配置文件锁。

配置文件行为:

  • 默认模式使用:~/.cache/agent-web/browser/fresh-profile
  • --profile 模式使用:~/.cache/agent-web/browser/profile-copy
  • 此 Skill 不会直接连接到你正在使用的 Chrome 配置文件
  • 如果 :9222 已被未知实例占用,启动会失败,而不会复用该实例

如果 Chrome 安装在非标准位置,请设置:

BROWSER_BIN=/path/to/chrome ./scripts/start.js --headless

可选的调试端点覆盖项:

BROWSER_DEBUG_PORT=9333 ./scripts/start.js --headless

停止 Chrome

./scripts/stop.js                         # Stop skill Chrome on :9222
BROWSER_DEBUG_PORT=9333 ./scripts/stop.js  # Stop skill Chrome on :9333
./scripts/stop.js --all                   # Stop all skill Chrome instances

适用于无头和有头浏览器。只会停止使用 Skill 缓存配置文件的进程,不会停止你常用的 Chrome。关闭时会保留 Cookie 和其他缓存状态;绝不会强制终止 Chrome。使用 --reset-profile 前请先停止浏览器。

切换到可见浏览器:

./scripts/stop.js
./scripts/start.js

导航

./scripts/nav.js https://example.com
./scripts/nav.js https://example.com --new

导航当前标签页或打开新标签页。

设备模拟(移动设备)

./scripts/emulate.js --list
./scripts/emulate.js iphone-14
./scripts/emulate.js pixel-7 --landscape
./scripts/emulate.js --reset

为浏览器 Skill 命令设置生效的设备模拟偏好设置(视口、DPR、触控、UA)。使用 --reset 清除设置。

nav.js、eval.js、pick.js、dismiss-cookies.js 和 screenshot.js 等命令会自动应用当前生效的偏好设置。

执行 JavaScript

./scripts/eval.js 'document.title'
./scripts/eval.js 'document.querySelectorAll("a").length'
./scripts/eval.js 'document.querySelector("button")?.click(); "clicked"'
./scripts/eval.js 'await Promise.resolve(document.title)'
./scripts/eval.js 'JSON.stringify(Array.from(document.querySelectorAll("a")).map(a => ({ text: a.textContent.trim(), href: a.href })).filter(link => !link.href.startsWith("https://")))'

在活动标签页中执行 JavaScript。输入可以是表达式或语句列表;命令会打印类似控制台的完成值,并等待 Promise 和顶层 await 执行完毕。请注意字符串转义,最好使用单引号。

截图

./scripts/screenshot.js
./scripts/screenshot.js --full-page
./scripts/screenshot.js --device iphone-14
./scripts/screenshot.js --device pixel-7 --full-page

截图并返回临时文件路径。

  • 默认:当前视口
  • --full-page:截取整个文档高度
  • --device <preset>:仅为该次截图临时启用移动设备模拟

选择元素

./scripts/pick.js "Click the submit button"

交互式元素选择器。点击以选择,按住 Cmd/Ctrl 并点击可多选,按 Enter 完成。此功能需要有头 Chrome;启动 start.js 时不要使用 --headless。

关闭 Cookie 对话框

./scripts/dismiss-cookies.js          # Accept cookies
./scripts/dismiss-cookies.js --reject # Reject cookies (where possible)

自动关闭欧盟 Cookie 同意对话框。

导航到页面后运行:

./scripts/nav.js https://example.com && ./scripts/dismiss-cookies.js

移动设备快速调试流程

./scripts/start.js --headless
./scripts/nav.js https://example.com
./scripts/emulate.js iphone-14
./scripts/nav.js https://example.com      # reload with mobile UA
./scripts/dismiss-cookies.js
./scripts/screenshot.js --full-page

后台日志(控制台 + 错误 + 网络)

由 start.js 自动启动,并将 JSONL 日志写入:

~/.cache/agent-web/logs/YYYY-MM-DD/<targetId>.jsonl

手动启动:

./scripts/watch.js

查看最新日志:

./scripts/logs-tail.js           # dump current log and exit
./scripts/logs-tail.js --follow  # keep following

汇总网络响应:

./scripts/net-summary.js

评论

支持 Markdown