AI Agent 在浏览器里露馅了:两个鼠标特征,识别率拉到 100%
最近在搭 Agent 做浏览器自动化任务的时候,我一直在想一个问题:网站那边到底能不能认出这是个 AI 在操作?如果能,识别依据是什么?如果不能,那些靠人机二分类吃饭的 bot 检测系统,面对 AI Agent 这种第三类流量,是不是直接失效了?
arXiv 上刚挂了一篇论文,标题叫「What Does It Take to Detect an AI Agent?」。它给出了一个挺干脆的答案:能识别,而且不需要多少特征。
今天的 bot 检测方案,基本把人流量和机器流量做二分类——不是真人就是 bot。这个假设在 AI Agent 大规模进场之前还算能用,但 Agent 不一样:它既不是人,也不是传统爬虫,是一个新的流量类,binary 分类器在架构上压根没有位置表示它。作者的实验证实了这一点:拿一个 MLP 做人类 vs bot 二分类,39.1% 的 AI Agent 会话被误判为人类;换成 SAINT 结构的 transformer,34.5% 依然被放过去。问题出在标签空间里根本没有「Agent」这个选项。加上 Agent 类之后,跑了 30 次(3 个模型族 × 10 个随机种子),Agent 识别的 F1 直接拉到 1.000。
三分法比二分法好用不算意外,真正有意思的是什么东西把 Agent 出卖了。答案是鼠标行为。用 Playwright 这类工具驱动 Agent 去点按钮、填表单、翻页面,它产生的鼠标事件和真人的鼠标事件之间存在一个结构性差异:物理鼠标或者触控板会产生原始的 pointer-move 和 wheel-delta 事件流——也就是每帧连续的位置变化和滚动增量——但 Playwright 不发射这些信号。Agent 的鼠标移动是「瞬移」式的:指令说点到哪里,光标就直接跳到那里,中间没有连续的轨迹数据。这就是论文说的「absence signature」——Agent 做不了只有物理输入设备才能做的事。
作者做了一个挺狠的验证:穷举搜索所有 1-5 个特征的子集组合,总共 9401 个 GBM 模型。结果发现两个行为特征——mouse_event_rate(鼠标事件频率)和 teleport_click_ratio(瞬移点击比)——就能在所有五个规避等级下实现 100% 的 Agent 召回率,精确度 0.994。五个特征把 macro-F1 抬到 0.991,但两个已经够用。而且信号是冗余的:去掉 teleport_click_ratio,检测率依然是 100%。单特征场景反而是退化的——模型直接坍缩成永远预测「Agent」,这就不叫检测了。
为了测试对抗性规避,他们搭了一个五级梯子:被动观察 → GAN 生成轨迹 → 真人光标数据回放。加起来 2299 个规避会话,在 10 个随机种子和 3 个模型族上做了 22990 次预测,Agent 漏检次数是零。
这篇论文让我想起几个事。一是现在大量网站的反爬和 bot 检测方案,可能对 AI Agent 存在严重的漏报。这些系统并不差,问题在于它们从设计之初就没考虑过第三类流量。如果 Agent 流量持续增长,升级到三分类不是锦上添花,是底线。二是这个「absence signature」思路很聪明——不看做了什么,看没产生什么——但这也意味着一旦浏览器自动化框架开始补齐这些底层事件,比如模拟真实的 pointer-move 和 wheel-delta 流,这个检测窗口就会收窄。论文自己也说了,这个信号是自动化框架的 artifact,不是 Agent 推理能力的证据。
正在跑 Agent 的团队,这篇论文提供了一个很实际的检查清单:Agent 在浏览器里产生的鼠标数据,有没有真实鼠标应有的连续轨迹?如果没有,在检测系统眼里可能就是裸奔的。
论文被 Jane Street 的 AI Agents Day workshop 接收了。有条件的可以翻翻源码,看那个 teleport_click_ratio 具体怎么算的——这可能是下次被网站 challenge 时能提前知道的事。
相关链接:
- arXiv: https://arxiv.org/abs/2607.26935