工具
指南

User-Agent 解析器

开发

将 User-Agent 字符串解析为浏览器、引擎、操作系统与设备类型。基于启发式,完全客户端。

100% 客户端 无后端
User-Agent 字符串
输出
浏览器
引擎
操作系统
设备类型
爬虫 / 机器人
本页内容

什么是 User-Agent 解析器?#

User-Agent(UA)是每个浏览器和 HTTP 客户端在请求里附带的、用来描述自己的一行文本。它也是出了名的”无结构烂摊子”:厂商们把历史兼容性标记层层叠加,以至于一条现代 Chrome 的字符串里同时出现 Mozilla、AppleWebKit、KHTML、Gecko、Safari 这些词——但浏览器实际上并不是其中任何一个。用肉眼读原始 UA 既慢又容易错,所以几乎每个统计分析后台、访问日志工具和爬虫检测层,都会先把它喂给一个解析器。

本页接收任意 UA 字符串,把它拆成你真正想要的五项信息:浏览器(名称和版本)、引擎(渲染内核)、操作系统(名称和版本)、设备类型(桌面 / 移动 / 平板)、以及是否爬虫(字符串是否像个 crawler)。全程在浏览器本地完成——从日志行里粘一段进来,直接读结果,无需服务端往返。

浏览器检测之所以比看起来难,关键在于顺序。专业浏览器必须排在 Chrome 之前判断,因为它们的 UA 字符串里为了兼容都包含了字面量 Chrome。Microsoft Edge、Opera、Samsung Internet、Vivaldi、CocCoc,都会被一个朴素的 if (ua.includes("chrome")) 误判成 Chrome。引擎也是同理:AppleWebKit 这个词同时出现在 Blink 浏览器(Chrome、Edge、Opera)和纯 WebKit 浏览器(Safari)里,所以引擎要根据浏览器族来推断,而不是直接匹配字符串。

如何使用#

  1. 点击顶部的 Use current(使用当前),把当前浏览器的 navigator.userAgent 载入输入框——这是看自己流量长什么样的最快方式。
  2. 或者把任意 UA 字符串粘进输入区——来自 nginx 访问日志、后端 req.headers["user-agent"]、curl 请求都行。
  3. 读取输出区的五行:
    • Browser(浏览器)——族名和主版本号(如 Chrome 120)。
    • Engine(引擎)——渲染引擎(Blink、WebKit、Gecko、Trident)。
    • OS(操作系统)——能恢复出来的名称和版本(如 Windows 10/11、iOS 17、Android 14)。
    • Device(设备)——desktop(桌面)、mobile(移动)或 tablet(平板),由 iPad、不含 Mobile 的 Android、iPhone 等标记推断。
    • Bot(爬虫)——yes/no,通过匹配 crawler 标识来标记(bot、crawl、spider、slurp、pingdom、headless、phantomjs、curl、wget、python-requests、axios 等)。
  4. 点击 Clear(清空)清空两个区域。
  5. 状态行会总结结果,或提示输入为空。

主要特性#

  • 专业浏览器优先识别。 Edge、Opera、Samsung Internet、Vivaldi、CocCoc、Firefox 都排在 Chrome 和 Safari 之前判断,不会被 Chrome 这个兼容标记悄悄吞掉。
  • 引擎由浏览器族推断。 Blink 还是 WebKit,由已检测到的浏览器来决定,而不是脆弱地直接匹配 AppleWebKit——这正是 Safari 不会被报成 Chrome 的原因。
  • 设备类型区分。 平板和手机用 iPad 标记、以及 Android ... Mobile 的有无来区分,与统计分析工具依赖的启发式一致。
  • 爬虫标记。 Bot 这一行专门标出你通常想从”真人流量”里剔除的那些字符串——搜索引擎爬虫、可用性监控、无头浏览器、以及各种 HTTP 库。
  • 100% 客户端运行。 UA 永远不会发送到任何地方。这也意味着你可以放心粘贴生产日志里的标记,不必担心泄露给第三方解析 API。

实战示例#

把这条典型的”Windows 上的 Chrome”字符串从访问日志粘进来:

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

五行会这样填上:

Browser   Chrome 120
Engine    Blink
OS        Windows 10/11
Device    desktop
Bot       no

再对比一条 Edge 的——注意末尾的 Edg/120:

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

一个先判断 Chrome 的朴素解析器在这里会报成 Chrome 120——错了。本页先测 Edg/ 再测 Chrome/,所以同一条字符串能正确得到 Browser: Microsoft Edge 120,引擎依然是 Blink(Edge 基于 Chromium)。

第三种情况展示爬虫分支。一个健康检查脚本发送 curl/7.81.0,即便它不带任何 Mozilla 包装,也会被标记为 Bot: yes,因为 curl 正是爬虫匹配器扫描的库标识之一。当你人肉翻日志时,就是这一行让你能把真人流量和机器噪声分开。

常见问题#

我的 Edge 浏览器为什么报成”Microsoft Edge”而不是”Chrome”,明明 UA 里就有 Chrome 这个词?#

因为 Edge 的 UA 刻意包含了 Chrome/120.0.0.0,好让那些专门为 Chrome 服务的网站也照样服务 Edge。本解析器先测 Edg/ 标记、再测 Chrome/,让专业族胜出。任何不按这个顺序检查的解析器,都会把每一个 Chromium 衍生品误报成 Chrome。

UA 里的操作系统版本可信吗?#

有一定可信度,但有局限。Windows 把 10 和 11 都归到 Windows NT 10.0,所以这里报成 10/11。iOS 和 macOS 的版本能从 OS X_x_x 标记里恢复,但历史上会在发布时被冻结。请把版本当成强提示而非保证,不要把安全决策建立在它上面。

这个 Bot 标记可靠到可以用来拦截流量吗?#

不可靠——基于 UA 的爬虫检测只是日志分析和看板过滤的便利手段,不是安全边界。恶意客户端可以任意伪造 UA,包括伪造得完全像真人。这一行用来识别明显的爬虫和库;真正需要可信的地方,请用限流、认证和行为分析。

解析器把所有项都显示成”Unknown”(未知),我粘的是什么?#

要么是空串或纯空白,要么是本解析器不认识的客户端(某些桌面应用和 SDK 会发送自定义标识)。前一种情况下状态行会提示输入为空;后一种情况下,浏览器和操作系统会落到 Unknown,而设备类型默认为 desktop。原始字符串会保留在输入区,方便你查看。