解析结果

浏览器
版本:—
操作系统
版本:—
设备类型
形态:—
CPU与引擎
引擎:—
开发者工具

用户代理解析器

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

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

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

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

模拟与兼容性的奇怪臃肿历史

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

当微软发布Internet Explorer时,它也支持框架。然而,由于其用户代理字符串不包含Mozilla令牌,Web服务器拒绝为IE用户提供高级框架布局。为了解决这个问题,微软在Internet Explorer的UA字符串中添加了Mozilla/4.0 (compatible; MSIE ...),假装是Mozilla以欺骗服务器。这引发了一场持续数十年的模拟连锁反应。当苹果发布Safari及其AppleWebKit渲染引擎时,Safari声明自己与Mozilla兼容以避免被屏蔽。后来,谷歌发布了基于WebKit的Chrome,并在其字符串中添加了ChromeSafari令牌,以确保与为Safari优化的网站兼容。如今,现代Chrome用户代理看起来像这样:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 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'等关键词以确保网站支持它。这种遗留令牌的积累使用户代理字符串变得复杂臃肿,需要复杂的解析引擎才能正确解码。

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

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

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

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

首页