Command Palette

Search for a command to run...

什么是用户代理字符串以及如何读取它

什么是用户代理字符串以及如何读取它

T
Toolz Team
|Aug 31, 2026|16 最小读数
Google 上的首选 Toolz.dev

网络工具集合的一部分

用户代理解析器

User-Agent 字符串,然后读取浏览器、渲染引擎、操作系统、设备类型和它描述的 CPU,所有这些都在浏览器中。

用用户代理解析器

我第一次必须理解批量用户代理字符串是在 SEO 项目期间 wpadminify.com者,盯着一个服务器访问日志,试图弄清楚有多少流量是真人,有多少爬虫,我有一列字符串,全部都是从开始的 Mozilla/5.0的, 都提到了Safari,其中一半人谎称自己是一个浏览器,而实际上是另一个浏览器,用眼神读它们是无望的,那是User-Agent解析器所做的工作,而且在用力做过太多次之后,我把一个内置了 Toolz.dev。这是它的指南,也是它后面令人惊讶的混乱标题的指南。

TL;博士: 工具 用户代理解析器 user-agent字符串,并将其分割为浏览器、渲染引擎、操作系统、设备类型和cpu架构,它应用了头's怪癖需求的检测顺序,因此edge不会被误读为chrome和移动safari是从其真实版本令牌中读取的,它还标记已知的机器人。一切都运行客户端:无上传,无注册,对真实日志行安全。

什么是用户代理字符串?

User-Agent 字符串是 的值 User-Agent 浏览器或 HTTP 客户端几乎每个请求都会发送的请求标头。标头的定义是在 RFC 9110中, HTTP语义规范,它将其描述为一系列产品标识符和注释,让服务器识别提出请求的软件,在实践中它命名浏览器,它的版本,渲染引擎,操作系统,通常还有设备。

意图是合理的:为服务器提供一种了解正在连接的内容的方法,以便它们可以调整响应或收集统计数据。现实情况是,该字符串已成为网络上最不值得信赖的自我报告数据之一,不是因为它是恶意的,而是因为二十年的兼容性黑客已经将令牌分层到令牌上,直到明显的读数通常是错误的。

这是 Windows 上的现代 Chrome 字符串:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36

它自称是Mozilla,提到了AppleWebKit,最后以Safari这个词结尾,它不是那些东西;它就是Chrome。之前的每一个令牌 Chrome/126 is 历史沉积物。解析器的存在正是因为你不能相信那些看起来最权威的代币。

为什么解析用户代理如此容易出错?

头(header)是模仿而增长的,在早期的浏览器大战中,服务器检查了user-agent来决定要发送哪个版本的页面,并且他们检查笨拙,通常带有简单的子字符串匹配,一个新的浏览器想要接收好的,现代页面必须包含服务器正在寻找的令牌,因此每个浏览器都复制了之前的获胜者,netscape自称为mozilla,因此internet Explorer声称与Mozilla兼容,当WebKit浏览器到达时,他们携带了Mozilla和KHTML令牌。Chrome从WebKit分叉,并保留了AppleWebKit和Safari,以便WebKit嗅探服务器能够很好地对待它。结果是单个字符串可以诚实地包含四个不同浏览器谱系的名称。

这会为任何读取字符串的人创建具体的陷阱:

  • Edge 和 Opera 都包含 Chrome。 Microsoft Edge 附加程序 Edg/126.0.0.0 和歌剧附录 OPR/但两者也都承载满 Chrome/126 token,因为它们是基于铬的。首先测试chrome,您将把每个边缘和歌剧用户标记为chrome。
  • Safari 隐藏了其真实版本。 在桌面和 iOS 上,Safari 在 a 中报告了其面向用户的版本 Version/17.5 令牌,而 Safari/604.1 token接近尾声的是webkit构建编号,而不是浏览器版本阅读 Safari/ 作为版本,您将获得一个毫无意义的数字。
  • IOS上的Chrome不是Chrome's引擎。 Apple 要求所有 iOS 浏览器都使用 WebKit,因此 iPhone 上的 Chrome 会报告 CriOS 并运行 WebKit,而不是 Blink。 iOS 上的 Firefox 是 FxiOS也是 WebKit。
  • Windows 11 不存在于字符串中。 Microsoft 从未碰过 NT 内核令牌,因此 Windows 10 和 Windows 11 都报告了 Windows NT 10.0.字符串根本分不清它们。

器(parser)是一小堆知道这些陷阱的有序规则,那真的是全部,但把顺序搞对就是整个游戏。

Toolz 用户代理解析器是如何工作的?

的 解析器 运行一系列检查,其顺序对上面的陷阱进行编码。它首先查找嵌入另一个浏览器的浏览器's令牌。chrome之前的edge、chrome之前的opera、chrome之前的samsung Internet和UC浏览器,因此借用了 Chrome token 从来不会意外获胜。它从 Safari 中读到 Version/ 代币而不是它 Safari/ 构建令牌。它识别 iOS 变体 CriOS 並 FxiOS 分别作为 Chrome 和 Firefox,同时正确报告其引擎为 WebKit。

对于操作系统,它将 Windows NT 内核编号映射到营销名称,因此 Windows NT 6.1 成为 Windows 7 和 Windows NT 10.0 变成 Windows 10 或 11,诚实地表示为一对,因为字符串确实无法区分它们。它恢复了 iOS 和 macOS 版本的虚线形式,标题用下划线写入如下所示 17_5它可以识别 Android、Chrome 操作系统和 Linux。

对于设备,它将请求分类为桌面、移动设备、平板电脑或机器人。平板电脑规则是繁琐的规则:iPad 是一种平板电脑,一种没有的 Android 设备 Mobile token 是一块平板电脑,以及任何匹配的东西 Mobile、 iPhone、或者 Windows Phone 是手机,在字符串暴露设备模型的情况下,例如 Android 构建字符串或 Apple 产品名称,解析器会将其表面化。

It also flags bots。这是我大多数人接触到的字段,因为当你正在阅读访问日志时,最有用的一个问题是有多少流量是自动化的。解析器匹配了一组广泛的签名,涵盖搜索爬虫,社交预览获取器和命令行客户端。

用户代理可以告诉您什么,不能告诉您什么?

值得精确地了解限制,因为将字符串视为事实会导致错误的决定。

问题 UA能回答吗? 注释
哪个浏览器系列 通常是的 具有正确的检测顺序
确切的浏览器版本 通常是的 越来越冷冻或减少
操作系统名称 通常是的 Windows 10 与 11 是不可能的
设备类型 粗略地 启发式,不保证
精确的设备模型 有时 仅当字符串包含它时
客户是否真实 否 琐碎的胡言乱语
屏幕尺寸或功能 否 使用功能检测代替

最后两行最重要。用户代理是自我报告的,可以在一行代码中更改,由任何 HTTP 客户端设置,或者由浏览器冻结以保护隐私。刮刀可以在 Windows 上将自己宣布为 Chrome,并且字符串中没有任何内容可以与之相矛盾。因此解析的结果告诉您客户端声称的内容,这对于统计和调试很有用,但不能证明任何事情。当您需要知道浏览器实际可以做什么时,可以在 JavaScript 中进行功能检测,而不是从名称推断功能。这是编写弹性前端代码背后的相同原理 web开发人员工具包 roundup 返回到重复。

用户代理字符串正在消失吗?

Bu完全是,但它们正在被刻意减少,Chromium浏览器已经冻结和修剪了遗留字符串几年,限制了它所暴露的细节水平,特别是次要版本号和一些平台细节的替代是 用户代理客户端提示(服务器)通过这种机制准确地要求提供它所需要的客户端信息 Sec-CH-UA 请求标头和 navigator.userAgentData JavaScript API,而不是接收一个长字符串它必须解析客户端提示也是Windows 10与11区别最终可用的地方,通过 Sec-CH-UA-Platform-Version。

未来几年的实际结果是两者都存在。经典 User-Agent header 仍然会根据每个浏览器和每个非浏览器客户端的每个请求而导出,并且大量的工具、分析和服务器端逻辑仍然会读取它。因此,解析字符串仍然是识别客户端的最便携方式,即使更丰富的数据转移到客户端提示。如果您正在构建新内容并精确地想要平台版本,请阅读客户端提示;如果您正在分析现有日志或支持最广泛的客户端,请解析字符串。

如何使用解析器?

Flow故意简单,在框中粘贴一个User-Agent字符串,或者点击其中一个内置样本,可以看到一个有代表性的桌面、移动端、机器人字符串,要抓取自己的,打开浏览器控制台,键入 navigator.userAgent(sperte)结果,然后粘贴,当你输入浏览器、引擎、操作系统、设备类型、cpu架构、bot标志更新live,没有按键,当你想要将结果放在别处时,复制为一个标签页分离的表格,干净地粘贴到电子表格或错误报告中。

因为整个事情都在你的浏览器中运行,所以你可以粘贴原始的访问日志行或真正的访问者字符串,而不会让它们中的任何一个离开你的机器。那个客户端模型是故意的,并且是站点上每个工具背后的相同模型,在中解释道 数据隐私在线工具 指南。对于您正在与请求一起调试的凭据, 基本的作者生成器 和 JWT 解码器 遵循相同的无上传方法。

解析器与其他 Web 工具配合的位置

用户代理解析器位于站点上的一小群请求和响应工具中。当您检查域的流量时, 域名搜索 tool 回答谁拥有和操作,当请求携带了你需要检查的承载令牌时,the JWT 解码器 从中读出声明。当您首先构建经过身份验证的请求时, 基本的作者生成器 建造 Authorization 头。当您正在研究页面如何向爬虫呈现自身时,爬虫会在自己的用户代理下读取您的页面 元标签生成器 塑造他们消耗的标签。

对于任何组装这些个人套装的人来说, 开发人员生产力工具 guide 涵盖了站点上基于浏览器的实用程序如何适应一个工作日,将它们保持在一起的要点是,调试 HTTP 交互很少只涉及其中一个问题。

实用工作流程:读取流量日志

让我用这条路让我开始的任务来做这个具体的,你已经导出了一片你的访问日志,你想了解它,天真的做法是用眼球观察用户代理列,这正是陷阱咬住的一个爬虫,它礼貌地将自己标识为 Googlebot 很简单,但在检查其他信号之前,宣布自己为普通 Chrome 版本的无头刮刀看起来与真正的访客相同。

解析器有两种帮助。首先,机器人标志立即捕获诚实的爬虫和常见的自动化客户端,因此您可以在一次通过中将明显的机器流量与人流量分开。其次,剩余流量的正确浏览器和操作系统细分告诉您有关受众的真实信息:它是否会扭曲移动设备、哪些操作系统占主导地位、旧浏览器是否仍然足以进行测试。在 WP Adminify 工作中,该细分改变了我们优先测试哪些浏览器,并确认一大块看起来像有机流量的浏览器是预览和监控机器人,而不是阅读器。解析字符串将一堵噪音墙变成了一个决定。

Keep 的一个纪律是来自 limits 部分的纪律:解析出来的结果是 reciple,而不是 proof,一个坚定的刮刀会锻造出一个令人信服的字符串,没有一个解析器能从 User-Agent 单独抓到这个,在赌注高的时候把解析与请求模式、速率、等信号结合起来,对于日常的统计和调试,虽然,正确的解析正是你所需要的,而用手做就是错误。

渲染引擎和CPU字段告诉我什么?

2个解析的字段比浏览器和OS的关注度要低,但两者都很有用 渲染引擎是实际上将HTML和CSS变成像素的组件,它是一个比浏览器名称更好的页面行为预测器 Chrome、Edge、Opera、Brave、三星互联网和其他大多数共享Blink引擎,因此一个中出现的渲染错误通常出现在所有这些中;Firefox使用Gecko;而Safari和iOS上的每个浏览器一起使用WebKit 当你在对布局错误进行分类时,按引擎而不是按浏览器名称对流量进行分组会告诉你你要测试多少个真正不同的渲染路径,这通常只有三个。

该解析器从平台令牌而不是浏览器标签中导出引擎,这就是为什么它可以报告 Chromium 浏览器的 Blink 和 Safari 的 WebKit,尽管两者都源自同一个 AppleWebKit 令牌。它还捕获了较旧的引擎,Internet Explorer 的 Trident 和旧版 Edge 的 EdgeHTML,这些引擎仍然显示在企业日志中。

CPU架构字段读取平台代币 x86_64、 Win64、 arm64、以及他们的亲属,报告客户端是 64 位、32 位还是 ARM 机器。它是检查何时服务于特定平台下载的字段,并且需要知道访问者可以运行哪个构建,并且它是您的受众有多现代的安静信号's 硬件。

常见问题

什么是用户代理字符串? User-Agent 字符串是浏览器或客户端在每次请求时发送的 User-Agent HTTP 标头的值,它是命名浏览器、其渲染引擎、操作系统以及通常为设备的产品令牌列表,在 RFC 9110 中定义服务器读取它以识别连接到它们的软件。

如何找到自己的用户代理? Open your browser's 开发者控制台,键入 navigator。userAgent,然后回车,它打印的字符串正是你的浏览器发送给服务器的内容,粘贴到用户代理解析器中,就可以看到它解码到的浏览器、操作系统、设备。

为什么 Chrome's User-Agent 包含 Safari 这个词? 为向后兼容。Chrome从Apple's WebKit分叉了它的引擎,早期的服务器在服务现代页面之前检查了Safari令牌,因此Chrome保留了它以避免被降级。同样的历史也是为什么几乎每个浏览器仍然以Mozilla/5.0开始其字符串的原因。

用户代理可以从 Windows 11 告诉 Windows 10 吗? No。2都报告了Windows NT 10.0,因为微软从未为Windows 11增加NT内核令牌,因此仅靠字符串无法区分两者。区分它们的现代方法是用户代理客户端提示,特别是Sec-CH-UA-平台-版本标头。

User-Agent 识别设备是否可靠? 是有用的提示,而不是证明,用户代理可以在一行代码中更改,由任何HTTP客户端设置,被刮刀欺骗,或者被浏览器冻结以获取隐私。将解析的结果视为客户端声称的,并在准确性重要时将其与其他信号结合起来。

解析器如何检测机器人和爬虫? 它将字符串与广泛的已知签名列表进行匹配,包括 Googlebot 和 Bingbot 等搜索爬虫、社交预览获取器以及 Curl、wget 和无头 Chrome 等自动化客户端。任何匹配都会设置机器人标志并将设备归类为爬虫。

将生产日志用户代理粘贴到这里安全吗? 是所有解析都发生在你的浏览器与JavaScript,并且字符串永远不会发送到任何服务器,你可以粘贴原始访问-日志行或真正的访问者用户-代理,而无需他们离开你的设备。

User-Agent 字符串是否已被弃用? 头(header)被冻结和缩减,而不是被移除,Chromium浏览器现在将细节限制在遗留字符串中,并通过用户代理客户端提示来公开更丰富的数据,经典字符串仍然在每个请求中导出,因此解析它仍然是阅读客户端细节的最便携方式。

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!