MiServe DevTools

我的贴纸

把工具固定在这里,会保存在此浏览器中。

User-Agent 解析器

把 User-Agent 字符串解析为浏览器、渲染引擎、操作系统和设备类型,并查看你自己的浏览器如何描述自己。

浏览器或客户端
渲染引擎
操作系统
设备类型
CPU 架构(如果字符串中注明)

本浏览器报告的自身信息

这些值读取自你当前使用的浏览器,而不是上面的字符串。它们只留在此页面中。

你正在使用的浏览器的属性
属性值
Client Hints 品牌
Client Hints 平台
语言
屏幕尺寸
设备像素比
时区
Cookie
WebAssembly
Web Crypto

在浏览器中运行。粘贴的内容不会被上传。

关于此工具

什么是 User-Agent 字符串

几乎每个 HTTP 请求都带有 User-Agent 请求头,客户端在其中报出自己的名字。几十年来,浏览器不断把彼此的名字加进去,好让专为竞争对手编写的网站也能正常为自己提供服务:这就是为什么 Chrome 的字符串以 Mozilla/5.0 开头,还提到 AppleWebKit、KHTML, like Gecko 和 Safari,也是为什么 Edge 和 Opera 发送的是 Chrome 的字符串,只在末尾加上 Edg/ 或 OPR/。

因此,解析器必须按固定顺序检测,从最具体的标识到最笼统的标识。此工具先检查爬虫和 HTTP 库,再检查带有自有标识的浏览器,最后才检查 Chrome 和 Safari,因为很多其他浏览器都会重复它们的标识。

Chromium 为什么冻结了其中大部分内容

这个字符串会随每个请求发送给每台服务器,其中的细节曾被用来对用户做指纹识别。因此 Chrome 精简了它,其他 Chromium 内核浏览器也随之跟进。现在版本号以 131.0.0.0 的形式发送,只有主版本号是真实的;平台部分则是固定值,例如 Windows NT 10.0; Win64; x64 或 Android 10; K,与真实系统无关。

需要详细信息的网站必须通过 User-Agent Client Hints 获取,即 Sec-CH-UA 系列请求头和 JavaScript 中的 navigator.userAgentData。如果你当前使用的浏览器提供这些值,结果下方的表格会显示它们。

优先使用特性检测

这个字符串部分被冻结、会模仿其他浏览器,而且客户端可以随意设置,因此不适合用来决定运行哪段代码。应该直接检测特性:JavaScript 中用 'share' in navigator,CSS 中用 @supports。这样,对于你从未听说过的浏览器和尚未发布的版本,判断结果也是正确的。

不过,在做统计、在日志中区分爬虫和真人,以及绕过某个已知浏览器版本的 bug 时,读取这个字符串仍然是合理的。

常见问题

为什么我的 Chrome 版本号以 .0.0.0 结尾?

Chrome 和其他 Chromium 内核浏览器精简了 User-Agent 字符串,以减少指纹识别。它们只发送主版本号,次版本号、构建号和补丁号都替换为零。完整版本号可以通过 User-Agent Client Hints 获取。

User-Agent 字符串能区分 Brave 和 Chrome 吗?

不能。Brave 有意发送与 Chrome 相同的字符串,所以解析器只能判断它是 Chromium 内核浏览器。任何不添加自有标识的浏览器都是如此。

为什么我的 Mac 报告的是 macOS 10.15.7?

Safari、Chrome 和 Firefox 把字符串中的 macOS 版本停在了 10.15,所以之后的每个 macOS 版本报告的也是这个数字。在搭载 Apple 芯片的 Mac 上,字符串中同样写着 Intel。

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

可以。任何客户端都可以发送任意字符串,很多爬虫会发送普通浏览器的字符串。不要基于它做安全决策。要确认 Googlebot 这样的爬虫,请按其运营方文档中的方法检查请求的来源地址。

粘贴的字符串会被发送到服务器吗?

不会。字符串由浏览器标签页中的 JavaScript 解析,此工具不会用它发出任何网络请求。

网络分类的其他工具