跳至内容
本页由英文自动翻译。 查看英文原文
词汇表·指纹识别

用户代理(用户代理字符串)

浏览器在 User-Agent 标头中发送并公开给 JavaScript 的浏览器和操作系统标识。

定义

在HTTP中,用户代理是发出请求的客户端软件,用户代理请求标头是它发送的文本字符串,以便服务器可以识别应用程序、操作系统、供应商和版本。 MDN 指出,此信息历来引起隐私问题,因为它可用于指纹识别。现代 Chromium 浏览器发送简化的字符串并将详细值移至用户代理客户端提示(Sec-CH-UA-* 标头和 navigator.userAgentData)。

图表:简化的用户代理字符串、默认客户端提示和通过 Accept-CH 请求的高熵提示
编辑图(简化插图,不是产品屏幕截图)。

它是如何运作的

  • 浏览器在每次请求时都会发送 User-Agent;典型的 Chrome 桌面值类似于“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML,如 Gecko) Chrome/143.0.0.0 Safari/537.36”。保留“Mozilla/5.0”、“KHTML,如 Gecko”和“Safari”令牌以实现历史兼容性。
  • 由于用户代理减少(从 Chrome 101 推出到 110),Chrome 将次要版本冻结为 0.0.0,使用固定桌面平台字符串,并在 Android 上发送固定的“Android 10; K”而不是真实的操作系统版本和设备型号。同样减少的值出现在 navigator.userAgent 和 navigator.platform 中。
  • Chromium 浏览器默认还会发送低熵客户端提示 — Sec-CH-UA(品牌和主要版本)、Sec-CH-UA-Mobile 和 Sec-CH-UA-Platform。服务器可以通过 Accept-CH 响应头请求高熵提示,例如平台版本、模型、架构或完整版本列表,然后浏览器决定返回什么。

为什么这很重要

  • 用户代理是浏览器指纹中的被动信号之一:它在没有任何脚本运行的情况下到达每个请求。
  • 检测系统可以将用户代理字符串与客户端提示和 JavaScript 值(navigator.platform、屏幕尺寸、触摸支持)进行比较。价值观不一致的个人资料比普通的个人资料更引人注目。
  • 指纹浏览器让每个配置文件设置其用户代理;好的工具可以使匹配的客户端提示、平台和浏览器引擎版本保持一致。

限制和常见误解

  • “更改用户代理字符串会更改我的浏览器指纹。”它改变一个值;客户端提示、JavaScript API、Canvas/WebGL 输出和字体仍然描述真实设置,除非它们也一致更改。
  • “用户代理字符串显示了我的确切操作系统和设备。”在精简版 Chrome 中,情况不再如此 — Windows 8.1 和 Windows 11 均报告“Windows NT 10.0”,而 Android 设备报告“Android” 10;K”。
  • “稀有或非常新的用户代理更安全。”不寻常或不匹配的价值观会缩小你的范围;常见的、内部一致的组合不太独特。
示例: 配置文件在其用户代理中声称“Macintosh; Intel Mac OS X 10_15_7”,但其 Sec-CH-UA-Platform 提示显示“Windows”,并且 navigator.platform 返回“Win32”。比较这三个值的网站可以看到该配置文件与其声称的不符。

没有浏览器或代理可以保证帐户不会受到限制。遵守各个平台的规则。

相关术语

  • 浏览器指纹 — 浏览器和设备特征的组合,可以识别没有 cookie 的浏览器。
  • 画布指纹识别 — 通过渲染 HTML 画布绘图的微小差异来识别设备。
  • 浏览器配置文件 — 一组独立的浏览器数据 — cookie、历史记录、设置、扩展 — 与其他配置文件分开。

来源

检查了2026-11-07。

← 所有术语表