User-Agent(简称UA)是HTTP请求头中的一个字段,浏览器(或爬虫、其他HTTP客户端)每次发送请求时都会带上这个字符串,用来告诉服务器「我是谁」——包含了浏览器名称和版本、操作系统及版本、渲染引擎、设备类型、CPU架构等信息。服务器可以根据UA返回适配不同设备的内容,开发者也常通过UA做兼容性处理、流量统计和爬虫识别。
UA字符串看起来冗长混乱是有历史原因的:早在浏览器大战时期,新浏览器为了让基于旧浏览器嗅探的网站能正常工作,会在UA中声称自己是旧浏览器(比如Chrome会带Safari标记、Safari会带Gecko标记),层层叠加导致现代UA字符串包含了大量历史遗留标识,让人难以直接阅读。UA解析器的作用就是把这些复杂字符串拆解开,提取出真正有用的信息。
主流浏览器都有固定的格式和标识词:Chrome包含Chrome/版本号,Firefox包含Firefox/版本号,Safari包含Version/版本号和Safari/标记,Edge新版用Edg/标识,微信内置浏览器用MicroMessenger/标识。操作系统也有对应标记:Windows用Windows NT+版本,macOS用Mac OS X+版本,iOS用CPU iPhone OS+版本,Android直接用Android+版本。通过正则表达式匹配这些关键词就能准确识别。
渲染引擎是浏览器用来解析HTML/CSS/渲染页面的核心:Chromium系浏览器(Chrome、Edge、Opera等)使用Blink引擎,Safari使用WebKit,Firefox使用Gecko,老IE使用Trident。知道渲染引擎可以帮助判断CSS/JS兼容性问题——同一个Blink引擎下Chrome和Edge的渲染表现高度一致。
爬虫检测是UA解析的重要用途之一。搜索引擎爬虫(Googlebot、Bingbot、Baiduspider)、SEO工具爬虫、恶意爬取程序、命令行工具(curl、wget)、脚本库(Python requests)都会在UA中带上自己的标识,或者干脆用非常简单的UA字符串。通过匹配bot、crawler、spider、curl等关键词可以快速识别非人类访问流量。
设备类型识别主要依赖移动标识:包含Mobile、iPhone、Android等关键词是手机;包含iPad、Tablet、Kindle等是平板;其他是桌面电脑。但要注意UA是可以被伪造的(User-Agent Spoofing),恶意爬虫可以伪装成正常浏览器,所以严格的反爬还需要结合其他特征,UA解析只能作为初步判断。
CPU架构信息在今天变得越来越重要:苹果M系列Mac使用ARM64架构,传统Intel Mac使用x64;Windows PC既有x64也有ARM64(如骁龙本);手机清一色ARM64。在提供软件下载时,如果能从UA判断用户架构,直接给出对应安装包(比如.dmg区分Intel/Mac版,.exe区分x64/ARM64版)能大幅提升用户体验。
需要注意UA解析存在局限性:UA可以被用户或插件修改伪造,新版本浏览器可能更改UA格式导致正则失效,Windows 11因为沿用NT 10.0版本号无法从UA区分Win10/Win11,iOS上所有第三方浏览器(Chrome、Firefox for iOS)都强制使用WebKit引擎所以UA会带有Safari标记。本工具的解析适合开发调试、日志分析等大多数场景,但对安全要求极高的场景请结合IP、TLS指纹等多维度判断。