cli-anything-browser 是做什么的?
一个基于命令行的浏览器自动化工具,使用 DOMShell 的 MCP 服务器。可以用文件系统命令浏览网页:ls、cd、cat、grep、click。
安装
前提条件
-
Node.js 和 npx(用于 DOMShell MCP 服务器):
# 从 https://nodejs.org/ 安装 Node.js npx --version -
Chrome/Chromium 并安装 DOMShell 扩展:
- 在 Chrome 中安装扩展
- 使用 CLI 前确保 Chrome 正在运行
-
Python 3.10+
安装 CLI
cd browser/agent-harness
pip install -e .
命令组
page — 页面导航
page open <url>— 导航到 URLpage reload— 重新加载当前页面page back— 在历史记录中后退page forward— 在历史记录中前进page info— 显示当前页面信息
fs — 文件系统命令(可访问性树)
fs ls [path]— 列出路径下的元素fs cd <path>— 更改当前目录fs cat [path]— 读取元素内容fs grep <pattern> [path]— 搜索文本模式fs pwd— 显示当前工作目录
act — 操作命令
act click <path>— 点击元素act type <path> <text>— 在输入框中输入文本
session — 会话管理
session status— 显示会话状态session daemon-start— 启动持久化守护进程模式session daemon-stop— 停止守护进程模式
使用示例
基本导航
# 打开页面
cli-anything-browser page open https://example.com
# 探索结构
cli-anything-browser fs ls /
cli-anything-browser fs cd /main
cli-anything-browser fs ls
# 返回根目录
cli-anything-browser fs cd /
搜索并点击
cli-anything-browser fs grep "Login"
cli-anything-browser act click /main/button[0]
填写表单
cli-anything-browser act type /main/input[0] "[email protected]"
cli-anything-browser act click /main/button[0]
JSON 输出
cli-anything-browser --json fs ls /
守护进程模式(更快的交互式使用)
# 启动持久连接
cli-anything-browser session daemon-start
# 运行命令(使用持久连接)
cli-anything-browser fs ls /
cli-anything-browser fs cd /main
# 完成时停止守护进程
cli-anything-browser session daemon-stop
交互式 REPL
cli-anything-browser
路径语法
DOMShell 使用类似文件系统的路径来表示可访问性树:
/ — 根节点(文档)
/main — 主区域
/main/div[0] — main 中的第一个 div
/main/div[0]/button[2] — 第一个 div 中的第三个按钮
- 数组索引为 0 起始:
button[0]表示第一个按钮 - 使用
..返回上一级 - 使用
/表示根节点
智能体特定指南
用于解析的 JSON 输出
所有命令都支持 --json 标志,用于机器可读的输出:
cli-anything-browser --json fs ls /
返回:
{
"path": "/",
"entries": [
{"name": "main", "role": "landmark", "path": "/main"}
]
}
错误处理
CLI 对常见问题提供清晰的错误消息:
- 未找到 npx:从 https://nodejs.org/ 安装 Node.js
- 未找到 DOMShell:运行
npx @apireno/domshell --version - MCP 调用失败:安装 DOMShell Chrome 扩展
在运行命令前检查 is_available() 的返回值。
守护进程模式提高效率
对于需要执行多条命令的智能体工作流,请使用守护进程模式:
- 启动守护进程:
cli-anything-browser session daemon-start - 运行命令:每条命令都会重用 MCP 连接
- 停止守护进程:
cli-anything-browser session daemon-stop
这样可以避免每条命令 1-3 秒的冷启动开销。
链接
安全注意事项
重要:在使用此 CLI 与 AI 智能体时,请注意以下安全注意事项:
URL 限制
浏览器工具集在导航前会验证所有 URL:
- 需要明确协议:URL 必须包含
http://或https://协议(不接受无协议的 URL,如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
cli-anything-browser page open http://localhost:8080 # 将被阻止
会话隔离
多个浏览器会话共享同一个 Chrome 实例。Cookie 和身份验证状态可能会跨会话持久保存。对于敏感操作,请考虑:
- 使用 Chrome 的访客模式或隐身模式
- 在会话之间清除 Cookie
- 为不同的安全上下文使用单独的 Chrome 配置文件