User-Agent 解析器

解析 User-Agent 字符串,检测浏览器、操作系统、设备类型和渲染引擎。所有处理在浏览器中完成。

即时解析 全面分析 客户端处理

如何使用 User-Agent 解析器

1

输入 UA

粘贴 User-Agent 字符串,或点击\"检测当前浏览器\"使用您的 UA。

2

自动解析

工具将自动检测浏览器、操作系统、设备类型和渲染引擎。

3

查看结果

查看详细的解析结果,了解客户端环境信息。

什么是User-Agent?

User-Agent字符串是浏览器和应用程序发送给网站的HTTP头,用于标识自身。它包含浏览器名称、版本、操作系统和设备信息。网站使用这些信息来提供适当的内容和跟踪使用情况。

User-Agent组成部分

浏览器

应用程序名称和版本(如 Chrome 120、Firefox 121 等)

操作系统

底层操作系统和版本(如 Windows 11、macOS 14 等)

设备类型

外形规格:桌面、移动、平板或其他

渲染引擎

底层引擎(Blink、Gecko、WebKit、Trident)

常见问题

User-Agent 字符串可以伪造吗?

可以。User-Agent 字符串由客户端自行设置,可以被修改或伪造。因此不能完全依赖它进行安全验证。

能检测哪些浏览器?

支持检测主流浏览器,包括 Chrome、Firefox、Safari、Edge、Opera 以及常见爬虫。

为什么解析结果不准确?

部分浏览器会模仿其他浏览器的 UA 字符串。解析器基于模式匹配,对于非常规或过时的 UA 可能不够准确。

为什么 Chrome 的 User-Agent 中也包含 Safari 一词?

为了兼容性。Chrome 源自 WebKit,而 WebKit 的 UA 字符串复制自 Safari,Safari 又复制自更早的浏览器——因此如今的 Chrome UA 显示为 Mozilla/5.0 ... AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36。每一个标记都是与旧式服务端检测脚本的历史握手,这也是为什么通常最后一个匹配到的浏览器标记才是真实的那个。

什么是 User-Agent 客户端提示(UA-CH)?

这是一种更注重隐私的替代方案,随 Chrome 的 User-Agent 精简一同推出。服务器通过 Accept-CH 响应头请求高熵提示,并在后续请求中接收 Sec-CH-UA-Platform 和 Sec-CH-UA-Full-Version 等结构化字段。新代码应优先使用特性检测或 UA-CH,而不是解析原始 UA 字符串。

基于 User-Agent 的检测有多可靠?

用于统计分析和粗粒度路由尚可,但用于任何与安全相关的场景都很脆弱。UA 字符串极易被伪造,第三方浏览器经常原样复制 Chrome 的标记,而精简后的 UA 会冻结次要版本号。MDN 推荐的最佳实践是:检测特性(CSS @supports、if ('IntersectionObserver' in window))而不是检测浏览器,并将 UA 解析作为兜底手段。

我可以修改或伪造自己的 User-Agent 吗?

可以。桌面版 Chrome、Edge 和 Firefox DevTools 都提供带 UA 覆盖的设备模拟;Safari 有 Develop > User Agent 菜单;curl 则通过 -A 来设置。依赖 UA 字符串来限制内容的网站在设计上就是可绕过的——这也是服务器永远不应将 UA 视为身份证明的另一个原因。

什么是“精简”的 User-Agent?

Chrome 的冻结计划(自 2020 年起逐步推行)会从默认 UA 中逐渐剥离版本细节:次要版本固定为 0,并移除大部分设备信息,最终形如 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36。其目标是限制被动指纹采集;精确数据则转移至需要选择加入的 Client Hints。

{-- * External Resources Component(#18 Phase 3b 内容佐证工程) * 工具页「权威引用」区块:RFC / W3C / WHATWG / ECMA / IANA / 官方规范站 / Wikipedia。 * * - 接受 :slug 属性 → 经 config/tool-sources.php 家族矩阵渲染该工具的权威引用 * - slug 未命中映射时不渲染(无权威来源的工具静默跳过) * - 链接 title 保持英文(引用源专名);description 经 * common.resources.descriptions.{key} 本地化,lang 未命中回退英文(线上不裸奔) * - 链接保持 dofollow(rel="noopener noreferrer") * * @param string|null $slug --}}