User-Agent
User-Agent 是什么
User-Agent 叫做用户代理,是 HTTP 协议中请求头中的一个字段值。通过该字段值可以告诉网站服务器用户使用的什么产品发送的 http 请求。该信息一般发送请求的产品名称、操作系统、版本号等信息。大家熟知的浏览器其实就是所谓的一种用户代理
通过谷歌的 chrome 浏览器,我们可以看到 user-agent 字段值如下:user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
User-Agent 的示例
在不同的设备和操作系统上,User-Agent 字符串会有所不同。这些字符串为网站提供了关于你正在使用的浏览器和设备类型的重要线索。让我们来看几个实际的例子:
Chrome User-Agent
Windows 电脑上,Chrome 浏览器的 UA:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Firefox User-Agent
Windows 电脑上,Firefox 浏览器的UA:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0
Safari User-Agent
Mac 电脑上,Safari 浏览器的 UA:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Safari/605.1.15
Edge User-Agent
Windows 电脑上,Edage 浏览器的 UA:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0
Android User-Agent
Android 手机上,Chrome 浏览器的 UA:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Mobile Safari/537.36
iOS User-Agent
iPhone 手机上,Safari 浏览器的 UA:
Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1
User-Agent 的组成
从上面的示例我们可以大概了解到,User-Agent(UA)字符串可以分为7个部分:
- Mozilla/5.0 - 这部分起源于网景导航器(Netscape Navigator)浏览器,但现在几乎所有的浏览器都会以这样或类似的形式开始他们的UA字符串。它并没有特定含义,只是遵循了一个历史标准
- (Windows NT 10.0; Win64; x64) - 这是一个括号内的详细信息列表,说明了使用者的操作系统。在这个例子中,"Windows NT 10.0" 指Windows 10操作系统,"Win64" 表示 64 位版本的 Windows,"x64" 也表示运行在 x64 架构处理器上
- AppleWebKit/537.36 - 表示该浏览器使用 AppleWebKit 渲染引擎进行页面渲染。"537.36" 则是具体版本号
- (KHTML, like Gecko) - KHTML 是 Konqueror 浏览器使用的渲染引擎。"like Gecko" 表示该浏览器兼容 Gecko 渲染引擎,Gecko 是 Firefox 使用的渲染引擎
- Chrome/124.0.0.0 - 指明了用户正在使用 Chrome 浏览器及其版本号 "124.0.0.0"
- Safari/537.36 - 即使用户实际上可能并不使用 Safari 浏览器,许多非 Safari 浏览器也会包含 "Safari" 及其版本号作为 UA 字符串一部分。这主要是为了与基于 Webkit 或需要特定 Safari 认证才能正常显示内容的网站兼容
- Mobile - 如果存在,则指示用户正在使用移动设备访问网站