用途
agent-browser 是一个基于 Rust 的无头浏览器自动化命令行工具,并提供 Node.js 回退方案,用于让 AI 智能体通过结构化命令操作网页。它把浏览器操作拆解为可脚本化的子命令,智能体可以导航页面、获取交互元素快照、按引用点击或输入,并读取页面信息,从而完成表单填写、登录、页面结构分析等任务。
主要能力
- 导航:open、back、forward、reload、close。
- 快照:snapshot 返回完整可访问性树,snapshot -i 仅返回交互元素(推荐),并支持 -c 紧凑输出、-d 限制深度、-s 按 CSS 选择器限定范围。
- 交互:click、dblclick、focus、fill、type、press、keydown、keyup、hover、check、uncheck、select、scroll、scrollintoview、drag、upload,均使用快照返回的 @refs。
- 获取信息:get text、get html、get value、get attr、get title、get url、get count、get box。
- 状态检查:is visible、is enabled、is checked。
- 截图与 PDF:screenshot(可输出到 stdout 或文件、支持 --full 全页)、pdf。
- 视频录制:record start/stop/restart,录制会创建新上下文但保留当前会话的 cookies/storage,未提供 URL 时自动返回当前页面。
- 等待:wait 元素、毫秒、文本、URL 模式、networkidle、JS 条件。
- 鼠标控制:mouse move/down/up/wheel。
- 语义定位:find role/text/label/first/nth,作为 refs 的替代方式。
- 浏览器设置:set viewport、device、geo、offline、headers、credentials、media。
- Cookie 与存储:cookies 读取/设置/清除,storage local 读取/设置/清除。
- 网络:network route 拦截、阻断或模拟响应,unroute 移除,requests 查看与过滤。
- 标签页与窗口:tab 列表/新建/切换/关闭,window new。
- 框架与对话框:frame 切换 iframe 或返回主框架,dialog accept/dismiss。
- JavaScript:eval 执行脚本。
- 状态管理:state save/load 保存与加载会话状态。
- 并行会话:--session 使用隔离会话,session list 列出会话。
- JSON 输出:--json 提供机器可读输出。
- 调试:--headed 显示浏览器窗口、console、errors、highlight、trace start/stop、record、--cdp 通过 Chrome DevTools Protocol 连接。
使用方式
安装(推荐 npm):
npm install -g agent-browser agent-browser install agent-browser install --with-deps
从源码安装:
git clone https://github.com/vercel-labs/agent-browser cd agent-browser pnpm install pnpm build agent-browser install
快速开始:
agent-browser open <url> agent-browser snapshot -i agent-browser click @e1 agent-browser fill @e2 "text" agent-browser close
核心工作流:导航(open)→ 快照(snapshot -i,返回 @e1、@e2 等引用)→ 使用引用交互 → 导航或 DOM 显著变化后重新快照。
表单提交示例:
agent-browser open https://example.com/form agent-browser snapshot -i agent-browser fill @e1 "user@example.com" agent-browser fill @e2 "password123" agent-browser click @e3 agent-browser wait --load networkidle agent-browser snapshot -i
使用保存状态进行认证示例:
agent-browser open https://app.example.com/login agent-browser snapshot -i agent-browser fill @e1 "username" agent-browser fill @e2 "password" agent-browser click @e3 agent-browser wait --url "/dashboard" agent-browser state save auth.json
后续会话加载状态:
agent-browser state load auth.json agent-browser open https://app.example.com/dashboard
并行会话示例:
agent-browser --session test1 open site-a.com agent-browser --session test2 open site-b.com agent-browser session list
适用场景
- AI 智能体自动操作网页,如填写表单、点击按钮、选择下拉项。
- 需要登录并复用会话状态的自动化流程。
- 抓取页面可访问性树或交互元素结构,用于分析或后续操作。
- 端到端流程验证与调试,包括截图、PDF、视频录制、trace。
- 需要拦截或模拟网络请求、设置设备与地理位置等浏览器环境的测试。
限制与注意事项
- 引用在每次页面加载内稳定,但导航后会变化,导航后必须重新快照获取新引用。
- 输入框建议使用 fill 而非 type,以确保清除已有文本。
- 若元素未找到,应使用 snapshot 查找正确的 ref。
- 若页面未加载,应在导航后添加 wait 命令。
- 调试时可使用 --headed 查看浏览器窗口。
- Linux ARM64 上若命令未找到,需使用 bin 文件夹中的完整路径。
- 常用选项:--session 隔离会话、--json JSON 输出、--full 全页截图、--headed 显示窗口、--timeout 设置命令超时毫秒、--cdp 通过 Chrome DevTools Protocol 连接。
- 问题反馈:技能问题提交至 https://github.com/TheSethRose/Agent-Browser-CLI,CLI 问题提交至 https://github.com/vercel-labs/agent-browser。