在线工具集

User-Agent 解析完全指南:浏览器识别 / 反爬 / 兼容性

User-Agent 字符串看似无用,实则是识别浏览器、检测爬虫、诊断兼容性的关键。本指南从 UA 历史、现状、解析方法到反爬应用,详解开发者需要知道的一切。

📅 更新于 2026-04-29 · ⏱ 约 10 分钟阅读 · → 立即使用 User-Agent 解析

User-Agent(UA)是浏览器和爬虫与服务器沟通时的"自我介绍"。一个看似无用的文本字符串,却暗藏了浏览器类型、版本、操作系统、设备类型等关键信息。但 UA 的历史充满了欺骗和妥协——"为什么所有浏览器都自称 Mozilla"的答案,能讲出 30 年的浏览器战争。本指南从 UA 的历史出发,讲清楚如何解析 UA、如何用 UA 反爬、如何诊断兼容性问题,以及 Client Hints 如何逐步取代 UA。无论你是后端工程师、爬虫检测专家还是前端开发者,都能在这份指南找到实用的解决方案和最佳实践。

为什么所有浏览器都自称 Mozilla?

1993 年,网景浏览器(Netscape)推出时,服务器经常根据 UA 判断浏览器类型,选择是否发送新功能。网景的 UA:Mozilla/1.0 (X11; SunOS 4.1.4 sun4m)。「Mozilla」是网景的代号。后来 IE 推出时,很多服务器拒绝给 IE 发送新功能。为了被服务器"看见",IE 伪装成 Mozilla:Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)。当 Firefox 推出时,同样事再发生一遍:为兼容性,Firefox 也自称 Mozilla。今天,几乎所有浏览器都包含 Mozilla 字符串,这个过程被称为「浏览器欺骗的军备竞赛」。Chrome 的 UA:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36,里面有 Mozilla、AppleWebKit(Safari 的引擎)、Safari 本身。这解释了为什么现代 UA 字符串那么冗长和混乱。

User-Agent 字符串的结构与解析

现代浏览器的 UA 遵循结构:Mozilla/5.0 ([系统信息]) [引擎信息] [浏览器信息]。以 Chrome 为例:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36。系统信息如 (Windows NT 10.0; Win64; x64) 表示 Windows 10、64 位。NT 10.0 = Windows 10/11,NT 6.3 = Windows 8.1。引擎信息如 AppleWebKit/537.36 是浏览器排版引擎,Chromium 系浏览器(Chrome、Edge、Opera)都用 WebKit。浏览器标识如 Chrome/120.0.0.0 才是真正的浏览器和版本。Safari、Firefox 类似位置。兼容模式字符串如 Safari/537.36 和 (KHTML, like Gecko) 都是兼容性声明,Safari 都会在自己 UA 里声称兼容 Gecko。解析 UA 的正确步骤:找 UA 字符串最后一个标记(通常是浏览器标识),提取版本号,根据 OS 字符串判断操作系统,用排除法排除其他浏览器。直接用正则容易出错,推荐用专业库如 ua-parser-js。

设备指纹组合:UA + 屏幕 + 时区

UA 单独使用容易被欺骗。反爬和设备识别的高阶做法是组合多个信号。信号组合包括:User-Agent 浏览器标识、屏幕分辨率 window.screen.width × height、时区 new Date().getTimezoneOffset()、浏览器语言 navigator.language、硬件信息 GPU、CPU 核心数、字体列表用户安装的字体、插件列表(Firefox 支持)、WebGL 指纹 GPU 和驱动信息。这些信号组合形成"设备指纹"。统计学上,10 个信号的组合能唯一标识 99.9% 的用户。反爬虫系统用设备指纹检测爬虫——爬虫通常在不同请求间保持相同的 UA、屏幕、时区,而真实用户的设备多样性更强。xTechTools 的 UA 解析工具会额外显示当前访问者的屏幕、语言、时区信息,帮助开发者理解完整的设备指纹并诊断异常访问。

反爬场景:识别爬虫 UA

爬虫会伪装成浏览器,但往往在 UA 中留下蛛丝马迹。官方爬虫(诚实类)自称爬虫名字如 Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)、Facebookexternalhit/1.1、Twitterbot/1.0。隐秘爬虫伪装成浏览器但 UA 有线索如 curl/7.x.x(工具特征)、Python-Requests/2.x(爬虫库)、Scrapy/2.x(框架标识)。黑产爬虫使用随机或真实 UA,需用行为特征识别——正常 Chrome UA 但没有 Accept-Language 头、没有 Referer 头(真实浏览器几乎总有)、Accept-Encoding 非标准。反爬策略包括:白名单爬虫(允许 Googlebot、Bingbot 等 SEO 爬虫,验证 IP 反向 DNS)、黑名单爬虫(拒绝已知恶意爬虫 UA)、行为检测(爬虫频率高、路径模式明显)、IP 信誉库(数据中心 IP 非家庭用户)。单靠 UA 反爬效率低,结合 IP、请求频率、HTTP 头完整性效果最好。

SaaS 后台诊断:"哪些浏览器有问题"

SaaS 产品运营常见问题:某个用户报告「我看不见某个功能」。追查往往发现是浏览器兼容性。诊断流程包括:前端埋点收集用户的 UA、浏览器性能数据和功能支持情况(WebGL、Fetch、IndexedDB);后台汇总生成报告(IE 用户占比、各浏览器版本错误率、特定功能在某浏览器可用性);问题诊断(Safari 用户错误率高可能是 CSS Grid 兼容性、Firefox 用户看不见元素可能是 WebKit 前缀问题、老版 Chrome 用户多可能需要 polyfill)。xTechTools 的 UA 解析工具可以快速识别用户的浏览器和版本,配合错误日志能快速定位兼容性问题,大幅降低故障排查时间。

Client Hints:UA 的现代替代方案

User-Agent 本身存在设计缺陷:信息混乱、容易欺骗、版本字符串长度无限增长。Chrome 团队提出了 Client Hints 来替代 UA。Client Hints 是浏览器在 HTTP 请求头中发送结构化的设备信息,而不是含混字符串。示例头包括:Sec-CH-UA、Sec-CH-UA-Mobile、Sec-CH-UA-Platform、Sec-CH-UA-Platform-Version、Sec-CH-UA-Full-Version。优势包括:结构化不需正则解析、简洁版本号分离不会无限增长、可控网站可声明需要哪些 Hints。当前状态:Chromium 系浏览器(Chrome、Edge)已支持,Safari、Firefox 支持有限或实验阶段,大多网站仍依赖 UA 向后兼容。迁移建议新项目优先用 Client Hints,同时向后兼容 UA。预计 5-10 年内主流浏览器完全迁移到 Client Hints,UA 最终会被弃用。

Webview、App 爬虫与 AI 爬虫识别

Mobile App 中的内嵌浏览器(Webview)有特殊的 UA。iOS Webview(WKWebView):Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Mobile/15E148 Safari/604.1,和 Safari 相似但有时被改为 App 标识。Android Webview:Mozilla/5.0 (Linux; Android 13; SM-A536B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36。某些 App(微信、抖音)会特殊修改 UA。应用场景包括为 App 内用户展示不同 UI、防止 Webview 被爬虫滥用、统计用户来源。xTechTools 的 UA 解析工具会识别 Webview 和常见 App。而 AI 爬虫(ChatGPT、Gemini、Claude 训练数据采集)有独特 UA 如 GPTBot/1.0、CCBot/1.0、Bytespider/1.0。问题与对策包括:数据被用于 AI 训练无属性被使用;识别与屏蔽,在 robots.txt 拒绝这些爬虫;服务器侧检查 UA 并拒绝;法律合规(欧盟 GDPR)。预期未来 AI 爬虫增多,网站需主动管理爬虫权限保护创意资产。

常见问题

如何在 JavaScript 中获取用户的 User-Agent?

使用 `navigator.userAgent`。但只能在浏览器中使用。后端(Node.js)从 HTTP 头 `User-Agent` 获取。检测浏览器类型推荐用库如 `ua-parser-js` 或 `bowser`,不要手写正则。

User-Agent 伪装能骗过服务器吗?

能骗过 UA 检查,但骗不过完整的设备指纹检查。爬虫伪装 UA 后,屏幕分辨率、时区、语言等信号往往对不上真实浏览器,被识别概率高。最佳反爬不是看 UA,而是看行为特征。

能否用 UA 识别真实用户 vs 爬虫?

单靠 UA 不行,准确率低。需结合:HTTP 请求头完整性、IP 信誉库、请求频率、访问路径模式。某些爬虫会遗漏 Accept-Language 头或 Referer,这些异常信号比 UA 更可靠。

为什么我的网站在某浏览器显示异常?

先用 UA 解析工具识别用户的浏览器和版本。然后用 `@supports` CSS、条件注释(IE)或 polyfill 修复兼容性问题。最常见的是:Safari 不支持某些 CSS 特性、IE 不支持 ES6。

Client Hints 何时能完全替代 User-Agent?

预计 3-5 年内大多数浏览器支持。但向后兼容性考虑,UA 短期内不会被完全弃用。新项目应同时支持两者,优先 Client Hints。

爬虫真的能伪装完美吗?

完美伪装很困难。即使 UA、屏幕、时区都对上,行为特征仍然会暴露:请求频率、访问路径、是否执行 JavaScript、是否加载图片、Cookie 处理逻辑等。综合多个信号的反爬系统检测率可达 95% 以上。