news 2026/4/19 19:50:38

【Vercel实用Skill】agent-browser 技能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Vercel实用Skill】agent-browser 技能

面向AI代理的浏览器自动化CLI工具。用于网站交互、页面导航、表单填写、按钮点击、截图、数据提取、Web应用测试或自动化任何浏览器任务。

技能概述

agent-browser 技能是一个强大的浏览器自动化命令行工具,专为AI代理设计。它提供了完整的浏览器控制能力,包括导航、交互、数据提取和状态管理。该工具支持多种浏览器操作模式,包括无头模式、有头模式、移动设备模拟等,并提供了丰富的安全特性,如域名白名单、操作策略和内容边界保护。

下载地址:https://github.com/vercel-labs/agent-browser

主要功能

  • 浏览器导航:打开URL、关闭浏览器、页面导航等基础操作
  • 页面快照:获取页面交互元素的引用标识符,支持CSS选择器范围限定
  • 元素交互:点击、填充、选择、按键、滚动等各种交互操作
  • 信息获取:获取元素文本、当前URL、页面标题等信息
  • 等待机制:等待元素出现、网络空闲、URL模式匹配等多种等待策略
  • 文件下载:触发下载并等待下载完成
  • 截图与PDF:全页截图、带注释截图、PDF导出
  • 差异对比:比较页面状态、截图差异、URL对比
  • 认证管理:保存和使用认证配置文件,支持加密存储
  • 会话持久化:自动保存和恢复cookies及localStorage
  • 并行会话:支持多个独立的浏览器会话同时运行
  • 移动设备模拟:支持iOS模拟器和真实设备的Safari自动化
  • 安全特性:域名白名单、操作策略、内容边界、输出限制
  • 性能分析:Chrome DevTools性能分析支持
  • 视频录制:录制浏览器会话用于调试和文档

触发条件

在以下情况下应该调用此技能:

  • 用户需要"打开网站"或"导航到网页"
  • 用户需要"填写表单"或"提交表单"
  • 用户需要"点击按钮"或"执行点击操作"
  • 用户需要"截图"或"保存页面截图"
  • 用户需要"从页面抓取数据"或"提取网页内容"
  • 用户需要"测试Web应用"或"自动化测试"
  • 用户需要"登录网站"或"处理认证流程"
  • 用户需要"自动化浏览器操作"或"浏览器自动化"
  • 任何需要程序化Web交互的任务

核心工作流程

标准自动化流程

每个浏览器自动化都遵循以下模式:

  1. 导航:使用agent-browser open <url>打开页面
  2. 快照:使用agent-browser snapshot -i获取元素引用(如 @e1, @e2)
  3. 交互:使用引用进行点击、填充、选择等操作
  4. 重新快照:在导航或DOM更改后,获取新的引用

处理过程

1. 基础导航与快照

打开网页并获取页面元素信息:

agent-browser open https://example.com/form agent-browser snapshot -i # 输出: @e1 [input type="email"], @e2 [input type="password"], @e3 [button] "Submit"

2. 表单交互

使用元素引用进行表单填写和提交:

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

3. 命令链式调用

使用&&链接多个命令,提高效率:

# 链式打开 + 等待 + 快照 agent-browser open https://example.com && agent-browser wait --load networkidle && agent-browser snapshot -i # 链式多步交互 agent-browser fill @e1 "user@example.com" && agent-browser fill @e2 "password123" && agent-browser click @e3

4. 认证处理

使用认证保险库安全存储和使用凭据:

# 保存凭据(加密存储) echo "pass" | agent-browser auth save github --url https://github.com/login --username user --password-stdin # 使用保存的配置文件登录(LLM不会看到密码) agent-browser auth login github

5. 会话持久化

自动保存和恢复会话状态:

# 使用命名会话 agent-browser --session-name myapp open https://app.example.com/login # ... 登录流程 ... agent-browser close # 状态自动保存到 ~/.agent-browser/sessions/ # 下次自动加载状态 agent-browser --session-name myapp open https://app.example.com/dashboard

6. 数据提取

从页面提取文本和数据:

agent-browser open https://example.com/products agent-browser snapshot -i agent-browser get text @e5 # 获取特定元素文本 agent-browser get text body > page.txt # 获取所有页面文本 # JSON输出用于解析 agent-browser snapshot -i --json agent-browser get text @e1 --json

7. 移动设备模拟

在iOS模拟器上测试移动Safari:

# 列出可用的iOS模拟器 agent-browser device list # 在特定设备上启动Safari agent-browser -p ios --device "iPhone 16 Pro" open https://example.com # 移动特定手势 agent-browser -p ios tap @e1 # 点击 agent-browser -p ios swipe up # 滑动

输入要求

使用此技能时,用户需要提供:

  • 目标URL:要访问的网站地址
  • 操作指令:具体的浏览器操作(点击、填充、截图等)
  • 认证信息(可选):如果需要登录,提供用户名和密码
  • 会话名称(可选):用于并行会话或状态持久化
  • 选择器或引用(可选):特定元素的CSS选择器或快照引用

输出说明

技能将提供:

  • 页面快照:包含交互元素及其引用标识符的可访问性树
  • 截图文件:PNG格式的页面截图(可带注释)
  • PDF文件:页面PDF导出
  • 提取的文本:页面或元素的文本内容
  • 页面信息:当前URL、页面标题等
  • 差异报告:页面状态或截图的对比结果
  • 错误信息:控制台错误和网络错误

使用示例

示例1:表单提交

agent-browser open https://example.com/signup
agent-browser snapshot -i
agent-browser fill @e1 "Jane Doe"
agent-browser fill @e2 "jane@example.com"
agent-browser select @e3 "California"
agent-browser check @e4
agent-browser click @e5
agent-browser wait --load networkidle

示例2:数据提取

agent-browser open https://example.com/products
agent-browser snapshot -i
agent-browser get text @e5 # 获取特定元素文本
agent-browser get text body > page.txt # 获取所有页面文本
agent-browser snapshot -i --json # JSON格式输出

示例3:并行会话

agent-browser --session site1 open https://site-a.com
agent-browser --session site2 open https://site-b.com
agent-browser --session site1 snapshot -i
agent-browser --session site2 snapshot -i
agent-browser session list

示例4:带注释的截图

agent-browser screenshot --annotate # 输出包括图像路径和图例:
# [1] @e1 button "Submit"
# [2] @e2 link "Home"
# [3] @e3 textbox "Email"

agent-browser click @e2 # 使用注释截图中的引用

安全特性

内容边界(推荐用于AI代理)

启用内容边界以帮助LLM区分工具输出和不受信任的页面内容:

export AGENT_BROWSER_CONTENT_BOUNDARIES=1
agent-browser snapshot # 输出:
# --- AGENT_BROWSER_PAGE_CONTENT nonce=<hex> origin=https://example.com ---
# [accessibility tree]
# --- END_AGENT_BROWSER_PAGE_CONTENT nonce=<hex> ---

域名白名单

限制导航到受信任的域名:

export AGENT_BROWSER_ALLOWED_DOMAINS="example.com,*.example.com"
agent-browser open https://example.com # 允许
agent-browser open https://malicious.com # 阻止

操作策略

使用策略文件限制破坏性操作:

export AGENT_BROWSER_ACTION_POLICY=./policy.json

# policy.json 示例:
{"default": "deny", "allow": ["navigate", "snapshot", "click", "scroll", "wait", "get"]}

最佳实践

  1. 引用生命周期管理:页面更改后引用会失效,必须在导航、表单提交或动态内容加载后重新快照
  2. 使用链式命令:当不需要读取中间命令输出时,使用&&链接命令以提高效率
  3. 会话命名:运行多个代理或自动化时,始终使用命名会话以避免冲突
  4. 认证安全:使用认证保险库而非在命令中暴露密码,通过stdin传递密码避免shell历史记录
  5. 等待策略:对于慢速页面,使用wait --load networkidle而非依赖默认超时
  6. 注释截图:当页面有未标记的图标按钮或需要视觉推理时,使用--annotate标志
  7. 语义定位器:当引用不可用或不可靠时,使用语义定位器(如find text "Sign In" click
  8. 会话清理:完成后始终关闭浏览器会话以避免进程泄漏
  9. 控制台检查:定期检查浏览器控制台以发现不可见的错误
  10. 输出限制:对于大型页面,设置AGENT_BROWSER_MAX_OUTPUT防止上下文溢出

配置文件

在项目根目录创建agent-browser.json进行持久化设置:

{ "headed": true, "proxy": "http://localhost:8080", "profile": "./browser-data" }

优先级(从低到高):~/.agent-browser/config.json<./agent-browser.json< 环境变量 < CLI标志

深度文档参考

参考文档使用场景
references/commands.md完整命令参考及所有选项
references/snapshot-refs.md引用生命周期、失效规则、故障排除
references/session-management.md并行会话、状态持久化、并发抓取
references/authentication.md登录流程、OAuth、2FA处理、状态重用
references/video-recording.md录制工作流用于调试和文档
references/profiling.mdChrome DevTools性能分析
references/proxy-support.md代理配置、地理测试、轮换代理

实验性功能:原生模式

agent-browser有一个实验性的原生Rust守护进程,直接通过CDP与Chrome通信,完全绕过Node.js和Playwright。这是可选的,暂不建议在生产环境中使用。

# 通过标志启用 agent-browser --native open example.com # 通过环境变量启用 export AGENT_BROWSER_NATIVE=1 agent-browser open example.com

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 19:46:54

若依框架深度定制:移除默认首页并实现登录后智能路由跳转

1. 若依框架路由定制需求分析 很多企业级项目在使用若依框架时&#xff0c;都会遇到一个典型需求&#xff1a;移除系统默认的欢迎首页&#xff0c;让用户在登录后直接跳转到其权限下的首个有效功能菜单页面。这个需求看似简单&#xff0c;但实际改造过程中会遇到不少坑。我最近…

作者头像 李华
网站建设 2026/4/19 19:41:30

大气层整合包系统架构解析与深度优化指南

大气层整合包系统架构解析与深度优化指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 大气层&#xff08;Atmosphere&#xff09;作为Nintendo Switch平台最成熟的自定义固件解决方案&a…

作者头像 李华
网站建设 2026/4/19 19:41:17

【26年6月】英语六级2015-2025年12月历年真题及答案PDF

2026年上半年全国大学英语六级考试安排公告 考试时间与形式 2026年上半年全国大学英语六级考试&#xff08;CET-6&#xff09;笔试将于6月13日举行。考试采用标准化模式&#xff0c;全面评估考生英语听、说、读、写、译等综合应用能力。 备考资料说明 为辅助考生科学备考&a…

作者头像 李华
网站建设 2026/4/19 19:40:56

零代码调用Unet预训练模型【Pytorch实战】【即开即用】

1. 零代码体验Unet语义分割的魅力 第一次接触语义分割的时候&#xff0c;我被它的效果惊艳到了。想象一下&#xff0c;你上传一张照片&#xff0c;AI就能自动把照片里的物体轮廓精准地勾勒出来&#xff0c;就像用PS抠图一样&#xff0c;但完全不需要手动操作。这种技术在实际应…

作者头像 李华
网站建设 2026/4/19 19:37:14

从CPU到FPGA:超前进位加法器的Verilog实现与实战应用场景剖析

从CPU到FPGA&#xff1a;超前进位加法器的Verilog实现与实战应用场景剖析 在处理器设计的漫长演进史中&#xff0c;加法器始终扮演着关键角色。想象一下&#xff0c;当你用手机完成一次人脸识别支付&#xff0c;或者在游戏中看到逼真的光线追踪效果时&#xff0c;背后是数以亿计…

作者头像 李华
网站建设 2026/4/19 19:36:55

实战笔记:通过重打包与lief库实现Android应用Frida持久化注入

1. 为什么需要Frida持久化注入 在Android应用安全分析和逆向工程中&#xff0c;Frida是最常用的动态分析工具之一。但传统的Frida使用方式有个明显痛点&#xff1a;每次都需要通过frida -U命令手动附加到目标进程&#xff0c;这在某些场景下非常不方便。比如&#xff1a; 分析应…

作者头像 李华