浏览器 Agent
页面读取与操作、登录态,以及反自动化等现实问题。
一句话理解:浏览器 Agent 让 Agent 能用网页完成任务,但它读到的每一个字都不可信,点下的每一个按钮都可能是真的——所以要读结构、限域名、隔离登录态、关键动作留给人。
大量业务系统只有网页端:老旧的后台管理系统、广告平台后台、政府申报网站、订票网站、合作方的对账页面。没有 API,Agent 想完成任务就得像人一样打开浏览器。
浏览器 Agent 看起来只是“会点网页的 Agent”,实际上它同时踩中了三个难题:页面是动态且不断改版的、登录态是敏感资产、网页内容完全不受你控制。这一课讲清楚它怎么工作,以及上线前必须想好的现实问题。
Agent 怎么“看”网页
浏览器 Agent 理解页面主要有两种方式,成熟的产品通常两者结合:
| 方式 | 拿到的是什么 | 优点 | 缺点 |
|---|---|---|---|
| 读页面结构 | 可访问性树(accessibility tree)、元素列表、表单字段、可见文本 | 精确、省 Token、元素有稳定引用、不需要视觉识别 | 画布、图片验证、复杂自定义控件读不出来 |
| 看截图 | 当前视口的图片,按坐标点击 | 所见即所得,能处理任何渲染结果 | 慢、贵、坐标易偏,小字要放大看 |
几个可以核实的例子:
- 微软开源的 Playwright MCP 主打“读结构而非像素”,基于 Playwright 的可访问性树工作,不需要视觉模型。
- Anthropic API 提供的浏览器操作工具同时支持两种方式:既能读取可访问性树并用元素引用操作,也能截图后按坐标点击;浏览器本身由开发者自己的应用运行。官方文档建议,任务只在网页内时用浏览器工具,需要整个桌面时才用计算机操作工具。
一次典型的循环是这样的:
注意中间那一步“执行器检查”:判断能不能做的逻辑写在执行器里,而不是交给模型。
登录态:最值钱也最危险的东西
浏览器 Agent 的很多价值来自“以你的身份”访问系统,但登录态一旦交出去,风险随之而来:
| 做法 | 说明 | 风险 |
|---|---|---|
| 复用你日常的浏览器 | Agent 直接用你已登录的 Chrome | 它能访问你登录过的一切:邮箱、网银、公司后台 |
| 持久化的专用配置 | 为 Agent 单独保存一份浏览器配置和登录信息 | 范围可控,但凭据长期存在,需要保护 |
| 一次性隔离会话 | 每次任务新开干净会话,结束即清空 | 最安全,但每次都要重新登录 |
| 专用低权限账号 | 为 Agent 开一个只有必要权限的子账号 | 推荐做法,出事时影响范围最小 |
把四种做法按“Agent 能碰到的范围”排开:
Anthropic 的浏览器工具文档给出的建议是:在专用容器或虚拟机中运行浏览器,使用全新配置、不带凭据;如果任务避不开登录,就用专用的低权限账号,并对会改变账号状态的操作保留人工确认。
举个例子:一个差旅助理 Agent 要在订票网站上比较航班和价格,正确的接入方式是申请一个只读子账号,只允许 Agent 查询班次、余票和价格;下单、支付、退改签这些动作即使网站支持,也不给 Agent 这个账号的权限。
至于输入密码、支付信息,更稳妥的产品设计是 交还给人:Agent 走到登录页或支付页就暂停,请用户亲自接管输入,完成后再把控制权交回。
反自动化与其他现实问题
Demo 里一切顺利,上线后常见的问题是:
- 验证码与机器人检测:很多网站会识别并阻止自动化访问。正确的做法是停下来交给人,或者寻找官方接口,不要设计绕过验证码的方案——这通常违反网站条款,也会让你的产品站在对方安全体系的对立面。
- 服务条款与频率限制:有些网站明确禁止自动化抓取或操作。批量访问前先确认条款,控制频率。
- 页面改版:按钮换个位置、表单多一个字段,基于截图和坐标的流程就可能失效。读结构比看像素更抗改版,但也不是免疫。
- 动态加载与弹窗:Cookie 同意框、营销弹窗、懒加载列表都会打断流程。处理 Cookie 弹窗时,默认选择最保护隐私的选项。
- 不可信内容:网页上的任何文字——包括用户评论、隐藏元素、图片里的字——都可能是写给 Agent 的“指令”。Anthropic 的文档直接提醒,模型有时会遵循页面内容里与用户指令冲突的指示。详见 Prompt 注入。
执行器里该写死的规则
参考官方文档的安全建议,一个浏览器 Agent 的执行器至少应该做到:
- 域名白名单在网络层执行,并且在每次跳转、重定向之后重新检查。
- 只允许
http和https协议,拒绝javascript:、file:、data:之类的地址。 - 默认关闭高风险能力,比如在页面里执行任意 JavaScript、上传本地文件。
- 购买、发消息、修改账号、接受条款 这类动作,在执行器里强制要求人工确认;一轮模型输出可能包含多个动作,要逐个检查。
- 屏蔽内网地址和本机地址,防止 Agent 被引导去访问公司内部服务。
常见误区
- “让 Agent 用我的浏览器最方便。” 方便的另一面是它拥有你全部的登录态。先问:这个任务真的需要这么大的权限吗?
- “能看截图就不需要读结构。” 截图方案更通用,但更慢、更贵、更脆弱。能读结构的页面优先读结构。
- “遇到验证码就想办法绕过去。” 验证码是网站在说“这里需要人”。产品设计应该是交还给人,而不是对抗。
产品经理检查清单
- 这个网站真的没有 API、导出功能或数据推送吗?
- Agent 使用谁的账号?权限能否收敛到只读或最小范围?
- 允许访问的域名清单是什么?跳转到清单外怎么处理?
- 哪些页面动作会产生真实后果,是否都设了人工确认?
- 遇到登录、验证码、支付页时,交接给用户的体验是什么样的?
- 目标网站的条款是否允许自动化访问?
练习
选一个你工作中常用、但没有 API 的网页后台,用 45 分钟完成:
- 写下一个 Agent 要在这个后台完成的具体任务,拆成步骤。
- 标出每一步是只读还是会改变状态。
- 为它设计账号方案、域名白名单,以及需要人工接管的节点。
延伸阅读
- Claude API:Browser use tool
- microsoft/playwright-mcp
- Anthropic:Mitigating the risk of prompt injections in browser use
下一步
下一课「Computer Use」把范围从网页扩大到整个桌面:当连浏览器都用不上时,Agent 如何靠看屏幕、点鼠标完成任务,代价又是什么。