User Agent Parser

解析器结果

浏览器
版本:—
操作系统
版本:—
设备类型
外形尺寸:—
中央处理器及引擎
发动机:—
开发者工具

用户代理解析器

立即解析和分析浏览器用户代理字符串。在本地检测浏览器、操作系统、布局引擎、CPU 和设备详细信息。

揭秘现代 Web 生态系统中的用户代理 (UA) 字符串

当客户端(例如网络浏览器、网络爬虫、搜索引擎机器人或移动应用程序)向远程服务器发出 HTTP 请求时,它通常包含名为 User-Agent 的标头。该标头是一行文本,提供有关客户端软件应用程序类型、布局引擎、操作系统和硬件平台的信息。对于 Web 开发人员、系统架构师和安全专业人员来说,解析此字符串对于确定如何提供服务、保护或分析 Web 流量至关重要。然而,用户代理字符串因冗长、混乱而臭名昭著,并且充满了似乎与实际使用的浏览器完全无关的历史引用。

我们的客户端用户代理解析器旨在将这些复杂、臃肿的字符串分解为清晰、逻辑和结构化的参数。在几秒钟内,您就可以识别主要浏览器、其主要和次要版本、底层操作系统及其特定内部版本或版本号、用于呈现页面的布局引擎、CPU 架构以及设备的整体外形尺寸。

仿真和兼容性的奇怪而臃肿的历史

要理解为什么现代用户代理字符串看起来像是对早期网络的考古挖掘,我们必须回到 20 世纪 90 年代中期。当 Netscape Navigator 是主要浏览器时,它支持 HTML 框架等高级元素。 Web 服务器被配置为检查 User-Agent 标头中是否有关键字 Mozilla(Netscape 的内部项目名称)。如果存在关键字,则服务器发送基于框架的布局;否则,它会提供一个没有框架的简化页面。

当微软发布 Internet Explorer 时,它也支持框架。但是,由于其用户代理字符串不包含标记 Mozilla,Web 服务器拒绝 IE 用户使用高级框架布局。为了解决这个问题,微软在 Internet Explorer 的 UA 字符串中添加了 Mozilla/4.0(兼容;MSIE …),冒充 Mozilla 来欺骗服务器。这引发了长达数十年的模仿连锁反应。当苹果发布 Safari 及其 AppleWebKit 渲染引擎时,Safari 宣称自己与 Mozilla 兼容以避免被屏蔽。后来,Google 发布了基于 WebKit 构建的 Chrome,并将 ChromeSafari 令牌添加到其字符串中,以确保与针对 Safari 优化的网站的兼容性。如今,现代 Chrome 用户代理如下所示: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,如 Gecko) Chrome/120.0.0.0 Safari/537.36

外行的解析器可能会查看此字符串并得出用户正在同时运行 Safari、WebKit、KHTML、Gecko、Chrome 和 Mozilla 的结论。强大的ua字符串解析器的作用是跟踪这个遗留谱系并准确提取真实的用户代理配置。

UA解析器提取的关键组件

对用户代理字符串的全面分析会产生几个重要的技术组件:

  • 浏览器名称和版本:隔离活动浏览器(例如 Google Chrome、Apple Safari、Mozilla Firefox、Microsoft Edge、Opera 或 Internet Explorer)及其确切版本号。
  • 操作系统 (OS) 和操作系统版本:识别客户端平台(Windows、macOS、Linux、Android、iOS)并转换版本代码(例如将 Windows NT 10.0 映射到 Windows 10/11,或将 Mac OS X 10_15_7 映射到 macOS Catalina)。
  • 布局渲染引擎:精确定位负责解析 HTML/CSS 的引擎(Chrome/Edge/Opera 为 Blink、Safari 为 WebKit、Firefox 为 Gecko、旧版 Internet Explorer 为 Trident)。
  • 设备类型和外形尺寸:对设备的硬件外形尺寸进行分类(台式机、移动设备、平板电脑、智能电视或游戏机)。
  • CPU 架构:解析硬件处理器类型(例如 AMD64、x86_64、ARM64 或 Intel i386)的指标,以了解本机性能能力。

实际的开发人员用例

解析用户代理字符串对于多个开发学科都非常有益:

安全的客户端执行

分析日志或复制粘贴活动用户数据时,安全性是一个主要问题。许多在线解析器将用户代理字符串上传到远程服务器进行处理,这存在暴露敏感诊断日志或元数据的风险。该工具完全在本地浏览器沙箱内运行。解析算法是用客户端 JavaScript 编写的,这意味着您输入的字符串将在本地进行处理,而不会发送到我们的服务器。这确保了完全的隐私和零数据泄漏。

边缘情况和向用户代理客户端提示的过渡

虽然用户代理解析是必不可少的,但它也有局限性。用户代理很容易被欺骗。开发人员可以配置无头浏览器(例如 Playwright、Puppeteer 或 Selenium)或命令行实用程序(例如 curlwget)来使用自定义用户代理字符串。

此外,浏览器供应商正在转向用户代理客户端提示(UA-CH)。在此标准下,浏览器默认忽略高熵细节(例如特定操作系统补丁或浏览器补丁版本),从而保护用户隐私免受指纹识别。相反,它们公开低熵信号,并且服务器必须通过 HTTP 响应标头(例如 Accept-CH)显式请求较高熵数据,或者在 Javascript 中异步访问它们。例如:

if (navigator.userAgentData) { navigator.userAgentData.getHighEntropyValues(["platform", "platformVersion"]) .then(ua => { console.log("高熵操作系统版本:", ua.platformVersion); }); }

随着此转换的进行,开发人员需要维护处理经典用户代理字符串和现代客户端提示结构的解析逻辑。

常见问题

什么是用户代理字符串以及它包含哪些信息?

用户代理 (UA) 字符串是浏览器在每个 HTTP 请求上发送到 Web 服务器的文本标头。它包含有关您的设备和软件的具体技术详细信息,包括 Web 浏览器名称和主要/次要版本、操作系统(例如 Windows、macOS、Android、iOS)及其版本、渲染布局引擎(例如 Blink、WebKit 或 Gecko)以及 CPU 架构或设备类型(台式机、移动设备或平板电脑)。

这个用户代理解析器如何处理和分析字符串?

该解析器使用结构化正则表达式从用户代理字符串中提取关键标识符标记。它完全在客户端运行,扫描特定模式(例如“Chrome/”、“Version/”、“Windows NT”或“Aarch64”)以隔离浏览器、操作系统、布局引擎、CPU 架构和设备外形尺寸。然后,它映射兼容性标记以确定实际的客户端软件与历史仿真标签。

为什么现代用户代理字符串看起来如此复杂和臃肿?

从历史上看,浏览器添加关键字来模仿竞争对手并绕过限制性的服务器端用户代理检查。例如,Chrome 包含“Mozilla/5.0”、“AppleWebKit”、“Safari”和“Chrome”等关键字,以确保网站支持它。遗留令牌的积累将用户代理字符串变成了复杂、臃肿的字符串,需要复杂的解析引擎才能正确解码。

使用此在线解析器时我的用户代理数据安全吗?

是的,这个工具非常安全,因为它在您的 Web 浏览器中本地执行 100%。解析脚本不会在任何远程服务器上传输、记录或存储您的用户代理字符串。您的数据完全保留在本地浏览器沙箱中,这对于处理敏感内部日志或合规性限制调试任务的开发人员来说是安全的。

什么是用户代理客户端提示 (UA-CH)?它们会取代 UA 字符串吗?

用户代理客户端提示 (UA-CH) 是一种现代替代方案,旨在通过减少浏览器指纹识别来提高用户隐私。默认情况下,浏览器不会发送完整、臃肿的用户代理字符串,而是最初共享最少的详细信息。如果需要,服务器必须显式请求高熵详细信息(例如确切的操作系统版本或 CPU 架构)。 UA-CH 正在逐渐取代现代基于 Chromium 的浏览器中的标准 UA 字符串,但传统的 UA 解析对于旧版兼容性仍然至关重要。

首页