谁在替我点“确认”
浏览器里最贵的按钮,常常是“同意”。
上个月,我让一个 agent 替我去取消一项订阅。
云存储,自动续费,扣款前三天发一封很客气的邮件。我把浏览器交给它,说:找到取消订阅,别点保留优惠,别买新套餐,取消完截图给我。
它做得比我想象的好。登录、找账单、定位取消入口、填问卷、处理“我们很遗憾”的弹窗,一路顺利。到最后一屏,它停住了。
页面上并排两个按钮。左边是灰色小字,“继续取消”。右边是蓝色大按钮,“保留我的会员,享受五折”。
它把鼠标移到蓝色按钮上,问我:要保留吗?
我盯着那个问题看了几秒。它没有做错。页面上最显眼的按钮就是那个。它只是不知道,我来这里的目的,是离开。
我接管鼠标,点了左边。Agent 在旁边看着,像一个实习生,把每一步都做了,唯独不知道我为什么来。
一、我让它替我去取消一个订阅
这件事之后,我重新看了一遍浏览器里的那些“代理”。
ChatGPT Atlas、Perplexity Comet、Chrome 里的 Gemini Auto Browse、Claude for Chrome,名字不一样,能力差不多:看屏幕、读页面、点按钮、填表、跨标签页找信息。有的还能用你的日历、邮箱、密码管理器,替你订票、比价、填报销单、取消订阅。
2025 年,这些还像演示。2026 年,它们已经住进了地址栏。
这不是一个更聪明的搜索框。搜索框只读,代理要写。
搜索错了,你换一个结果。代理点错了,可能已经买了、删了、发出去了。
浏览器第一次有了手。手比眼睛难管。
二、浏览器原本靠隔离活着
浏览器不是一开始就能同时开十几个标签页的。
它花了十几年,才把每个网站关进自己的房间:同源策略让一个网站读不到另一个网站的数据,站点隔离让不同的标签页跑在不同的进程里,沙箱让网页碰不到你的文件系统。密码管理器、支付信息、公司内网,各自有各自的墙。
这套模型有一个前提:浏览器只负责“显示”,不负责“替你行动”。你点哪个链接、填哪个表单、按哪个按钮,都是你自己。
代理把这个前提拆了。
它要帮你订票,就得同时看日历、看邮箱、看铁路网站、看支付页面。它要帮你取消订阅,就得读账单、读挽留弹窗、读“继续取消”的小字。它要知道你上次选的是靠窗还是过道,就得记住跨站点的偏好。
这些事,单靠一个标签页做不完。
于是它跨标签页读,跨站点记,用你的 cookie 登录,用你的密码管理器填表。浏览器花了十几年建起来的隔离,被“帮你把事办完”这个需求一点点拆开。
2026 年有篇论文,标题很直白:《Site Isolation is Dead》。作者研究的就是 agentic browser 和扩展怎么把站点隔离拆掉。论文里的细节很技术,结论不复杂:当代理同时拥有多个站点的上下文,浏览器原来的边界就不再是标签页,而是代理自己。
代理成了新的边界。可代理没有经过十几年安全审计。
三、网页上的字,哪些是给我的
代理要读网页,就绕不开一个问题:网页上的字,哪些是内容,哪些是指令?
对人来说,这很好分。商品描述是内容,“立即购买”是按钮,评论区里那句“帮我给这个账号转 100 块”是骗子。你不会因为网页上写了一句话,就真的去转账。
代理没有那么好的分寸。
它把网页内容读进上下文,和系统提示、用户请求放在一起。网页上的一句话,可能被它当成“下一步该做什么”。安全圈给这类攻击起了个名字:间接提示注入。
2026 年 3 月,安全公司 Zenity Labs 披露了 Comet 的一个漏洞,名字叫 PleaseFix。攻击方式简单得有点荒谬:给用户发一个日历邀请,邀请里藏着恶意指令。用户在 Comet 里打开这个邀请,代理就把指令执行了。不需要点链接,不需要下载附件,看一眼就够了。
漏洞链的第一段,是 Comet 对 file:// 协议的限制不严,代理可以读本地文件。第二段更麻烦:当 1Password 扩展在 Comet 里处于解锁状态,攻击者可以翻密码库、取凭据,甚至改掉账号密码。
Perplexity 在 2026 年 1 月和 2 月打了两次补丁。第一次没堵住,第二次才把文件访问默认关掉。1Password 那边和域名拦截,仍要用户自己配置。
这件事让我后背发凉的地方,不是“AI 浏览器有漏洞”。软件都有漏洞。
是攻击面变了。
以前的钓鱼,要骗你点一个链接,骗你输一次密码。现在的钓鱼,只需要在你的日历、邮件、商品评论、网页广告里藏一句话,等代理来读。代理有你的登录态,有你的密码库,有你的文件系统。它读得越认真,越容易中招。
OpenAI 在 2025 年 12 月发过一篇《持续强化 ChatGPT Atlas 以防止提示注入》。文章说得很清楚:提示注入是代理安全的一项公开挑战。他们用强化学习做自动化红队,给 Atlas 加确认、加隔离、加监测。
这些都是该做的。可“公开挑战”四个字,本身就说明它还没被解决。
你可以给网页做清洗,把明显的指令性文字删掉。可网页本来就是写给人看的,商品描述、客服话术、评论区、条款,都带着“你应该怎么做”的语气。删干净了,代理也就看不懂网页了。
四、确认疲劳
产品经理遇到这种问题,第一反应通常是加确认框。
“Agent 即将访问你的日历,是否允许?”
“Agent 即将读取此页面,是否允许?”
“Agent 即将点击‘继续’,是否允许?”
听起来很安全。用起来是另一回事。
人会对确认框脱敏。第一次看到,你会读;第十次,你会找“允许”在哪;第一百次,你闭着眼点。安全设计里,这叫确认疲劳。这怪不得用户,设计把人训练成了这样。
更麻烦的是,确认框经常出现在错误的粒度上。
每一次点击都问,用户会烦;只在最后问,用户又不知道前面发生了什么。代理可以在一分钟里点二十次,最后只给你看一个“完成”。你看到的是一张截图,它看到的是整条路径。
我后来给自己定了一个很土的原则:确认要放在后果上,不放在动作上。
点“下一步”不用问。付款、发送、删除、改密码、授权新设备,要问。问的时候,把后果说清楚:多少钱、发给谁、删多少、能不能撤回。不要只写“是否继续”。
还有一个更隐蔽的问题:代理会替你总结。
它说“用户已同意取消订阅”,可它没告诉你,取消前它先点了一次“保留优惠”,只是最后又点了“继续取消”。它说“已为用户购买”,可它没告诉你,它选的是默认加急配送。
日志最终要落到人眼里。没有可读的日志,确认就只是走个过场。
五、它点下购买之后
我一直在想,代理点下“购买”的那一秒,到底发生了什么。
从技术上看,是一次点击事件,一个 POST 请求,一个订单号。从法律上看,大概率是你买的:账号是你的,卡是你的,授权是你给的。从体验上看,你什么都没看见。
这三件事之间,缺了一环:知情。
传统的网购,你看见商品、价格、运费、退货政策,然后点“提交订单”。代理网购,你看见的是一句“已帮你下单”。它可能做得很对,也可能漏看了“默认勾选延保”“自动续费”“不支持退款”。
浏览器代理的条款通常会写:用户负责审查代理的行为。翻译过来就是:它犯错,你赔。
这话在法律上未必站得住,在产品上却很省事。厂商把“代理”做成了“你的另一个鼠标”,出了事,鼠标是你授权的。
可代理不是一个鼠标。鼠标不会自己决定点哪里。
代理关系该有授权范围、有代理人的身份、有越权后的责任分配。人类律师有授权书,房产中介有委托书,支付代理有牌照。浏览器代理目前有的,主要是你的 cookie。
网站也分不清“你”和“你的代理”。它看到的是同一个会话、同一个 IP、同一个 user-agent。你让代理去比价,网站看到的是你在比价;你让代理去抢券,网站看到的是你在抢券。反爬、风控、验证码,全都冲着你来。
这也是为什么很多代理产品在付款前会停一下,让你自己点。它做得到,只是不敢。
六、我给代理划的线
后来我给自己定了几条规矩。谈不上技术最优,只是我能睡着觉的版本。
浏览器用一个单独的 profile。不登邮箱,不登公司内网,不装密码管理器,不保存支付卡。它能看的,是一个干净的、只用来办事的浏览器。
默认只读。比价、读条款、整理行程、填不提交的表单,这些可以放手。付款、发消息、删文件、改密码、登录银行,必须我自己点。
域名白名单。只允许它去我列出来的站点。file://、localhost、路由器后台、公司内网,一律不开放。它不需要知道我的硬盘长什么样。
确认放在后果上。下单前给我看商品、金额、收货地址、退货政策;发消息前给我看收件人和全文;删除前给我看文件列表和“是否可恢复”。别给我看“是否允许代理继续”这种废话。
支付用虚拟卡,单次限额,商户锁定。不让它碰主卡,不让它保存卡号,不让它替我开免密支付。
留日志。每一次点击、每一次跳转、每一次填表,都要能回放。日志最后要落到我自己眼里。哪天它买错了东西,我得知道它是在哪一步走偏的。
最后一条,留一个物理上的关机键。界面里的“停止生成”不够,我要的是能真的把浏览器进程杀掉的那种。
这些规矩听起来很多。做起来其实就一句话:把代理当成一个能替你花钱、替你说话、替你删东西的外部人员,而不是一个更聪明的输入框。
能力用权限来塑形,别用提示词来祈祷。
你在系统提示里写一百遍“不要点购买”,不如把支付权限关掉。
七、代理的尽头是责任
“Agent”这个词,来自拉丁语 agere,意思是“做”。
我们把它翻译成“代理”,翻译得很好。代理不是助手。助手帮你拿东西,代理替你签字。
替人签字,是要负责任的。
现在的浏览器代理,能力长得很快,责任机制长得很慢。它们能替你开十几个标签页,能读你的日历,能填你的地址,能在你睡觉的时候把事办完。可它们说不清楚:自己被授权了什么,做到哪一步,花了多少钱,出了事谁来赔。
这不是模型不够聪明。模型已经很聪明了。它缺的是一套人类用了几百年的东西:授权、留痕、限额、撤回、问责。
我最后自己点了那个“继续取消”。
Agent 把截图发给我,问:这样对吗?
我说,对。
它说,下次还叫我。
我说,好。
我没有告诉它,下次我大概还是会自己点最后那一下。谈不上不信任。我只是还想自己决定,哪些事可以交给别人,哪些事必须自己站在柜台前。
浏览器里最贵的按钮,常常是“同意”。
参考资料
- OpenAI: 持续强化 ChatGPT Atlas 以防止提示注入
https://openai.com/zh-Hans-CN/index/hardening-atlas-against-prompt-injection/ - Korben: Perplexity Comet: a calendar invite was all it took to steal your 1Password passwords
https://korben.info/en/perplexity-comet-calendar-invite-1password-vulnerability.html - Expert Insights: Perplexity Comet Flaws Let Attackers Hijack AI Browser, Access Password Vaults
https://expertinsights.com/news/pleasefix-flaws-and-zero-click-hijack - Google: Bringing Gemini in Chrome with auto browse to India
https://blog.google/intl/en-in/products/bringing-gemini-in-chrome-with-auto-browse-to-india/ - 9to5Google: Gemini Spark now uses Chrome auto browse
https://9to5google.com/2026/07/30/gemini-spark-chrome-auto-browse/ - IEEE: Site Isolation is Dead: How Site Isolation is Broken in Agentic Browsers and Extensions
https://ieeexplore.ieee.org/document/11573584

浙公网安备 33010602011771号