跳到主要内容
浏览器
导航

user-agent

User-Agent 解析

按 RFC 9110 的语法规则拆解 User-Agent 请求头,识别其中声明的渲染引擎、操作系统与设备类别标记。

技术说明

User-Agent 是 HTTP 请求头中的一个纯文本字段,客户端用它声明自身的产品标识与注释信息。按照 RFC 9110 的定义,该字段由若干「产品标识 / 产品注释」组成,产品标识形如 `名称/版本`,注释则写在括号内,用分号分隔。

由于历史原因,主流浏览器在该字段中同时保留多个引擎标识以达到兼容目的,因此同一个字符串里往往能读到渲染引擎、脚本引擎与操作系统三类信息。解析时通常采用「按注释块切分 + 按关键字匹配」的方式,而不是严格按语法树解析。

需要说明的是,客户端可以任意构造该字段,它并不属于可靠的鉴别依据。服务端在需要区分客户端能力时,更可靠的做法是使用特性检测或客户端提示(Client Hints)机制。

常见问题

User-Agent 字段的语法结构是什么?
由空格分隔的产品标识与产品注释组成。产品标识为 名称/版本,产品注释写在圆括号内、内部用分号分隔。RFC 9110 允许在字段中附加任意多个产品标识,用于声明兼容性。
为什么同一个 User-Agent 里会出现多个引擎名称?
为了兼容早期按关键字分发的站点,浏览器会同时声明多个引擎标识。这类标识属于历史遗留的兼容性约定,不代表该浏览器真的由这些引擎共同驱动。
用 User-Agent 做访问控制可靠吗?
不可靠。该字段由客户端完全控制,可以任意伪造。若需要判断客户端能力,应优先使用特性检测或客户端提示机制。