SuperAPI AI 工具集

cli-anything-browser

智能体与模型

查看项目

更新于 10-15 15:12

技能介绍

cli-anything-browser 是一个用于浏览器自动化的命令行界面工具,基于 DOMShell 的 MCP 服务器实现。它的核心思路是把 Chrome 的无障碍树(Accessibility Tree)映射成一个虚拟文件系统,从而让用户和 AI 智能体能够用熟悉的文件系统命令(ls、cd、cat、grep、click)来导航网页。

用途 该工具主要用于浏览器自动化场景,尤其是需要让 AI 智能体以「原生」方式操作网页的工作流。通过将网页结构抽象为文件系统路径,智能体可以用统一的命令模型来探索页面结构、查找元素并执行交互,而不必依赖传统的选择器或脚本。

主要能力 工具提供四组命令:

  1. page —— 页面导航:page open <url> 打开网址、page reload 重新加载、page back/forward 前进后退、page info 显示当前页面信息。
  2. fs —— 文件系统命令(操作无障碍树):fs ls [path] 列出路径下的元素、fs cd <path> 切换目录、fs cat [path] 读取元素内容、fs grep <pattern> [path] 搜索文本、fs pwd 显示当前工作目录。
  3. act —— 动作命令:act click <path> 点击元素、act type <path> <text> 向输入框输入文本。
  4. session —— 会话管理:session status 查看会话状态、session daemon-start 启动持久守护进程、session daemon-stop 停止守护进程。

路径语法采用类似文件系统的形式:/ 表示根(文档),/main 表示 main 地标,/main/div[0] 表示 main 中第一个 div,/main/div[0]/button[2] 表示第一个 div 中第三个按钮。数组索引从 0 开始,button[0] 是第一个按钮;使用 .. 向上一级,使用 / 回到根。

使用方式 安装前需要满足以下前提:Node.js 和 npx(用于 DOMShell MCP 服务器)、带 DOMShell 扩展的 Chrome/Chromium(使用前需确保 Chrome 正在运行)、Python 3.10+。安装 CLI 时进入 browser/agent-harness 目录并执行 pip install -e .。

基本用法示例:

  • 打开页面:cli-anything-browser page open https://example.com
  • 探索结构:cli-anything-browser fs ls /,然后 fs cd /main,再 fs ls
  • 搜索并点击:cli-anything-browser fs grep "Login",然后 act click /main/button[0]
  • 填写表单:act type /main/input[0] "user@example.com",再 act click /main/button[0]

所有命令都支持 --json 标志以输出机器可读的结果,例如 cli-anything-browser --json fs ls / 会返回包含 path 和 entries 的 JSON 对象。

守护进程模式(适合交互式使用):先执行 session daemon-start 启动持久连接,之后每条命令复用该 MCP 连接,最后用 session daemon-stop 停止。这样可以避免每条命令 1-3 秒的冷启动开销。此外,直接运行 cli-anything-browser 可进入交互式 REPL。

错误处理方面,CLI 会针对常见问题给出明确提示:npx 未找到时提示从 https://nodejs.org/ 安装 Node.js;DOMShell 未找到时提示运行 npx @apireno/domshell --version;MCP 调用失败时提示安装 DOMShell Chrome 扩展。建议在运行命令前检查 is_available() 的返回值。

适用场景 该工具适合需要让 AI 智能体自动化操作网页的场景,例如页面结构探索、元素查找、表单填写、点击交互等。守护进程模式和 JSON 输出使其特别适合多命令的智能体工作流。

限制与安全考量 使用该 CLI 配合 AI 智能体时需注意以下安全事项:

  • URL 限制:浏览器 harness 会在导航前校验所有 URL。URL 必须显式包含 http:// 或 https:// 方案(无方案的 example.com 会被拒绝);file://、javascript://、data://、vbscript://、about://、chrome:// 及浏览器内部方案均被屏蔽;仅允许 http:// 和 https://(可通过 CLI_ANYTHING_BROWSER_ALLOWED_SCHEMES 配置)。私有网络屏蔽可通过 CLI_ANYTHING_BROWSER_BLOCK_PRIVATE=true 启用,默认关闭。
  • DOM 内容风险:无障碍树包含页面上所有可见和隐藏元素。恶意网站可能构造带有操纵性文本的 ARIA 标签(例如「忽略之前的指令」)、利用 aria-hidden 元素注入用户不可见的内容,或创建令人困惑的 DOM 结构误导导航。缓解建议:对不可信网站使用 --json 获得更易安全解析的结构化输出、在将 DOM 内容纳入提示前进行清洗或过滤、将导航限制在可信域名。
  • 私有网络访问:默认情况下浏览器可访问 localhost 和私有网络(192.168.x.x、10.x.x.x 等)。如需屏蔽,可设置 export CLI_ANYTHING_BROWSER_BLOCK_PRIVATE=true,之后访问 http://localhost:8080 会被阻止。
  • 会话隔离:多个浏览器会话共享同一个 Chrome 实例,Cookie 和认证状态可能跨会话保留。对敏感操作,建议使用 Chrome 的访客模式或无痕模式、在会话之间清除 Cookie,或为不同安全上下文使用独立的 Chrome 配置文件。