← 返回 2026-05-18

观其行而知其人:通过 UI 轨迹指纹识别大语言模型浏览器代理 Known By Their Actions: Fingerprinting LLM Browser Agents via UI Traces

William Lugoloobi, Samuelle Marro, Jabez Magomere, Joss Wright, Chris Russell 📅 2026-05-14 👍 2 2026-07-13 08:36
LLM代理 侧信道攻击 安全与隐私 浏览器指纹 行为识别

仅凭页面 UI 操作轨迹即可识别 14 款大模型的浏览器代理身份

前置知识

LLM 浏览器代理 (LLM Browser Agent)

基于大语言模型驱动、能自主操作浏览器完成任务的智能体。代理循环观察网页截图 $(s_t)$、更新规划、产生操作 $(u_t)$ (点击、滚动、键入) 直到任务完成。本研究统一用 Midscene.js + Playwright 控制无头 Chromium,所有模型共享同一接口,差异只能来自模型本身。

本文的核心攻击目标就是这类代理;理解其观察-规划-操作的循环结构是看懂追踪数据和分类器设计的前提。

浏览器指纹 (Browser Fingerprinting)

通过被动收集客户端属性(如 User-Agent、Canvas、WebGL、字体等)组合出持久性标识符,从而跨会话重新识别用户或设备。本研究与其区别在于:不依赖这些可被伪造的静态属性,而是关注代理与页面交互过程中产生的动态行为信号。

传统指纹可被代理通过 header 伪装绕过,本文的方法捕捉的是代理的"行为节奏",更难防御。

事件间间隔 (Inter-Event Interval, IEI)

相邻两个操作事件之间的时间差 $\Delta t_i = t_{i+1} - t_i$。IEI 是衡量代理"思考节奏"的核心时序特征,本研究从中提取均值、标准差、百分位、按事件类型分组的统计量等共 41 个标量特征。

SHAP 分析表明 IEI 类特征在识别中贡献最大;理解它才能明白为什么随机延时是一种自然防御手段。

闭集与开集分类 (Closed-set vs Open-set Classification)

闭集假设测试样本一定属于训练时见过的 K 个类别;开集则允许出现训练时未见过的"未知"类别,需识别并拒识。本文前者用 Macro F1 评估,后者用留一代理 (leave-one-agent-out) 协议下对未知代理的 AUROC 评估。

现实威胁中对手会遇到未见过的新模型;区分两种设定能帮助理解哪些场景下攻击最有效。

同驻对手 (Co-located Adversary)

Cook 等人提出的安全模型:攻击者的代码与受害者在同一台机器上运行 (例如通过注入到页面的 JavaScript),与在网络路径上的监听者 (on-path attacker) 形成对比。本文的威胁模型正是被动同驻对手——页面所有者注入 JS 收集动作,无法观测网络层。

区分该模型有助于理解为什么只用 UI 事件就足够——对手根本不需要嗅探加密流量。

研究动机

随着大模型驱动的浏览器代理(如 OpenAI Operator、Anthropic Computer Use)从研究原型走向生产,每个网页访问都可能成为观察点。传统威胁模型主要关心"是人还是机器人"这一二元判断,相关工作(如 Pan 等人对鼠标运动神经运动结构的研究)已经把人类与自动客户端区分得很清楚。但当客户端明确是 LLM 代理时,更关键的问题浮出水面:站点能否在不知会代理的前提下识别出具体是哪一个底层模型?而一旦模型身份被识别,攻击者就能从已知的越狱语料库中挑选对 GPT-5.4、Claude Opus 4.6 等模型定制过的攻击,或将白盒对抗优化的搜索空间从全模型集压缩到目标模型已知的小集合,成本和难度都显著降低。

本文的目标是本文的核心目标是证明并量化这种指纹攻击的可行性:在 14 款前沿大模型、4 个真实网站任务(信息检索和在线购物)上,仅依靠被动注入的 JavaScript 所收集到的 UI 操作轨迹,能否以高准确率识别出底层模型。具体而言,作者希望在闭集设定下 Macro F1 显著超过 $\frac{1}{K} \approx 7\%$ 的随机基线 (K=14),并希望即使代理加入随机延时干扰,对手也能通过重训适应。

与已有工作不同的是,已有相关工作走的是不同路径:Pasquini 等人通过主动探测 LLM 应用接口并分析回复来识别模型(攻击者需主动发问);Zhang 等人则通过代理工具调用产生的网络流量元数据识别特定 LLM 应用 (而非底层模型)。本文的独特切入点是:在被访页面内部、不需要任何主动探测或网络层可见性的前提下,只利用所有代理共享的页面 UI 事件就识别出底层模型——这意味着攻击面从应用层和网络层进一步下沉到了页面层,任何控制了一个普通页面的站点都具备该能力。

核心方法

如果把每个 LLM 浏览器代理看作"打字员",不同模型就有不同节奏:有人思考久下键快,有人频繁停顿滚动细,有人偏爱顶部搜索框、有人直接点导航。本文把这种节奏与操作偏好量化成 41 个特征,再用监督学习分类器判断行为归属。技术路线分四步:(1) 统一执行环境——所有代理通过 Midscene.js + Playwright + 无头 Chromium 完成任务,确保差异只能来自模型;(2) 注入轻量 page_tracer.js,通过 Chrome DevTools Protocol 把 click、scroll、keydown、navigate 等事件连同毫秒时间戳推送回采集端;(3) 把事件流汇总成结构化轨迹 $\tau = \{(s_t, u_t, \Delta t_t)\}_{t=1}^{T}$,提取 IEI 统计、滚动、点击坐标、导航、动作量与页面级归一化等 41 个特征;(4) 在 1050 条会话、14 个类别上训练 XGBoost 主分类器,并训练 Random Forest、Lasso、LR、LSTM 作对照。

本文最本质的创新是把"模型身份识别"这一传统上由网络流量分析或主动探测承担的任务,转移到了被动收集的客户端 UI 行为信号上,并且证明这一信号足够强——同一浏览器、同一动作空间、同一任务下,不同模型的代理会留下统计上显著不同的"行为指纹"。与 Zhang 等人观察网络层元数据不同,本文的所有特征都来自浏览器 DOM 事件,与网络或模型输出完全解耦;与 Pasquini 等人需要主动构造查询不同,本文只需要等待代理在自然浏览中产生少量动作即可。

方法步骤详情

数据采集:每个 (模型, 任务) 对启动独立 Apptainer 容器避免浏览器状态泄露,执行 1050 个会话覆盖 2WikiMultiHopQA、FRAMES (Wikipedia 多跳问答)、WebShop、DeepShop (Amazon 购物)。事件收集由两条互补路径保证:主路径 page_tracer.js 注入 DOM 监听器并通过 CDP 实时推送交互事件;兜底路径 harvest() 在结束时读取残留事件 (特别是 beforeunload)。特征工程:每个 episode 提取 41 个标量特征——事件量、整体 IEI 统计、按事件类型分组的 IEI、滚动行为、点击坐标分布与链接点击比例、页面级归一化与退出行为。分类器训练:XGBoost 用 40 次随机搜索 + 3 折 CV 调参;LSTM 同时输入 token embedding (16 维) 与 5 个连续标量(log IEI、log 时间戳、归一化空间位置),最终隐藏态与 41 维聚合特征拼接后接分类头。威胁评估分两种:闭集 K=14 路分类;开集留一代理协议,把留出代理全部视作"未知"类报告 AUROC。

技术新颖性

技术新颖性体现在三方面:(1) 攻击面创新——首次将代理指纹攻击从主动探针和网络层下沉到被动 UI 事件,任何拥有普通网页的对手都能实施;(2) 形式化威胁模型——给出被动同驻对手的明确定义,并区分闭集/开集两种识别场景;(3) 防御分析闭环——通过对比 clean classifier 与 delay-adaptive classifier 在注入随机延时下的表现,证明简单的随机延时无法提供稳健保护,对手只需用延时轨迹重新训练即可恢复性能,把"防御"也拉回到可控的对抗博弈中。

Overview of our trace collection and threat model. Using a JavaScript tracker, we collect actions performed by a browsing agent and train a classifier to predict model identity.
Figure 1: Overview of our trace collection and threat model. Using a JavaScript tracker, we collect actions performed by a browsing agent and train a classifier to predict model identity.
Timing features are important but sensitive to perturbation, while action features are robust.
Figure 4: Timing features are important but sensitive to perturbation, while action features are robust.

实验结果

闭集下 XGBoost Macro F1 在 4 数据集上约 70-80%,远高于 7% 随机基线。2Wiki 上 Seed-2-lite 96.1%、UI-TARS-1.5 91.3%、GPT-5.4 91.5%;FRAMES 上 Qwen3.5-27B 97.4%;WebShop 上 Seed-2-lite 93.4%、UI-TARS-1.5 92.1%;DeepShop 上 Qwen3.5-27B 87.7%。开集 AUROC 上 GPT-5.4 在 2Wiki 达 0.84,但 Seed-2-lite 在 3/4 数据集上低于 0.5,两者反相关。SHAP 显示 IEI 标准差 (|SHAP|=0.22)、平均点击 IEI、首次动作耗时是初始最强指纹;注入 5 秒延时后骤降,分类器转向结构性按键比例、链接点击比例等动作特征。1/3 训练轨迹即逼近峰值,前 40% 事件即达全轨迹水平。能力-可识别性解耦:Claude Opus 4.6 准确率 88% 但 F1=68.7%,UI-TARS-7B 准确率 2.67% 仍 F1=90.07%,Pearson r=0.14 不显著。

Dataset splits used in this work.
Table 1: Dataset splits used in this work.
Models evaluated in this work.
Table 2: Models evaluated in this work.
Agent identification F1 (%) across datasets and classifiers.
Table 9: Agent identification F1 (%) across datasets and classifiers.
Training on diverse varied behaviours increases classifier performance.
Table 14: Training on diverse varied behaviours increases classifier performance.
Agents are identifiable from traces of their actions.
Figure 2: Agents are identifiable from traces of their actions.
Unknown agents are detectable above chance, but identification remains an open challenge.
Figure 3: Unknown agents are detectable above chance, but identification remains an open challenge.
Simple timing delays weaken unadapted classifiers but not adaptive ones.
Figure 5: Simple timing delays weaken unadapted classifiers but not adaptive ones.
Agent fingerprints emerge early and can be learned from short traces.
Figure 6: Agent fingerprints emerge early and can be learned from short traces.
Task capability does not predict agent identifiability.
Figure 7: Task capability does not predict agent identifiability.
查看结构化数据
任务指标本文基线提升
2WikiMultiHopQA (闭集识别, Wikipedia 多跳问答) Macro F1 (%) XGBoost 79.36 随机猜测 K=14 类约 7.14% 约 10 倍随机基线,最高单代理 Seed-2-lite F1=96.05%
FRAMES (闭集识别, Wikipedia 多跳问答) Macro F1 (%) XGBoost 75.27 随机猜测 7.14% 最高 Qwen3.5-27B F1=97.40%
WebShop (闭集识别, Amazon 购物) Macro F1 (%) XGBoost 74.23 随机猜测 7.14% 最高 UI-TARS-1.5 F1=92.09%
DeepShop (闭集识别, Amazon 购物) Macro F1 (%) XGBoost 72.57 随机猜测 7.14% 最高 Qwen3.5-27B F1=87.67%
开集未知代理检测 (留一代理协议) AUROC GPT-5.4 在 2Wiki 上 0.84,多数代理 >0.60 随机猜测 0.5 最好相对提升约 0.34 AUROC,最弱 Seed-2-lite 甚至低于 0.5
时间扰动下未重训分类器 (2Wiki, 最大 5s 延时) Macro F1 (%) 未重训 XGBoost 接近 0% 原始 clean F1=79.36 性能崩溃,但同一延时下重训的 XGBoost 恢复到接近 clean 的水平
能力 vs 可识别性 (14 代理 Pearson r) Pearson r r=0.14 (p=0.626) r=1 表示能力完美预测指纹 二者几乎不相关,证明指纹独立于任务表现
跨任务迁移 (Wikipedia 2Wiki→FRAMES) Macro F1 (%) 41.07 同站 in-domain 79.36 单任务迁移损失约 38 F1,但池化 2Wiki+FRAMES 训练恢复到 81.3

局限与改进

作者在文中坦率承认了三方面局限:第一,本文仅使用单一代理执行框架 Midscene.js 的纯视觉模式 (1280×768 视口),不同 harness 或 HTML 解析代理的指纹行为未被覆盖,因此"指纹是否 harness 不变"仍是开放问题;第二,开集检测能力弱且与闭集表现近乎正交——最容易闭集识别的 Seed-2-lite 在 3/4 数据集上 AUROC 低于 0.5,意味着面对真正未知的模型时,攻击者更可能只会触发"可能是未知模型"的告警而非精确归因;第三,跨网站迁移仍然失败 (Macro F1 仅 25-30),意味着对手必须针对每个目标站点单独采集并训练指纹库。从我的观察看,还存在隐含限制:(1) 实验的 API 成本高达 2890 美元且数据采集耗时约 3 天,对小团队复现并不友好;(2) 每代理仅跑了一次 (Episodes per (agent, question) = 1),缺乏对单代理行为稳定性的方差估计;(3) 攻击在被动同驻设定下成立,但若代理运行在远程沙箱或浏览器无头模式被禁用,注入 JS 的可行性就会下降。

独立分析的弱点

独立分析识别以下可改进的弱点:(1) 单一 harness 依赖——结论建立在 Midscene.js + Playwright 之上,不同 harness 或 HTML 解析代理的指纹行为未被覆盖;改进方向是提取 harness-invariant 的高层语义特征 (如"读一段再翻页"、"搜索偏好") 而非底层事件统计。(2) 缺乏自适应防御评估——只评估了"加随机延时",对模型级提示词防御 (如让代理主动改变点击节奏) 未测试;建议引入 prompt-level jitter 让代理在系统提示中加入随机停顿指令,再观察攻击者能否保持识别率。(3) 开集泛化不足——Seed-2-lite 等强特征代理 AUROC 反而低于随机,改进方向是引入对比学习或度量学习,让相似行为代理在嵌入空间聚类,再用密度估计做 OOD 检测。(4) 数据规模有限——每数据集 75-150 test 样本且全英文站点,难以判断中文站点、复杂 SPA、移动视口下的稳定性。(5) 没考虑代理主动反指纹——若训练时显式加入行为规范化约束 (如模仿人类平均 IEI),本文特征就会被稀释,值得系统化研究。

未来方向

作者明确提出的方向包括:(a) 表征 harness-invariant 的指纹信号;(b) 在 adaptive adversary 设定下评估混淆防御;(c) 把分类扩展到能灵活使用 HTML 解析或视觉 GUI 推理的代理。基于成果可延伸的研究还包括:(1) 把指纹信号扩展到多模态特征——结合截图风格、推理链文本长度、API 调用栈等做更稳健的归因;(2) 把该攻击面抽象成"代理可识别性 (agent identifiability)"度量,作为评测新模型时的一项隐私属性,类似差分隐私的 $\epsilon$;(3) 研究联邦或差分隐私训练能否在保留代理能力的同时混淆其行为特征;(4) 把方法推广到其他代理形式 (代码助手、IDE 自动化代理、操作系统级 agent),验证"行为指纹"是否是大模型代理的普遍属性。

复现评估

作者在论文末尾承诺发布 harness 和标注轨迹语料库 (给出了一个匿名仓库链接),开源承诺比较具体。复现门槛方面:硬件上需要 2 张 NVIDIA H100 GPU 来本地部署 9 个开源模型 (Qwen3-VL-8B/30B、Qwen3.5-9B/27B、GLM-4.6V/Flash、Gemma-4-26B/31B、UI-TARS-1.5-7B);云端 5 个专有模型需调用 OpenAI/Anthropic/OpenRouter API,仅 API 文本生成成本就达 2890 美元 (由作者实际支付),数据采集全程约 3 天。软件栈涉及 Apptainer 容器 + Playwright + Midscene.js,需要一定 DevOps 基础。整体看,中等偏上规模的实验室可在 1-2 周内复现 in-domain 闭集结果,但要做开集或跨域迁移实验需要额外的训练-测试拆分和计算预算。