解析 User Agent 字符串
User Agent 解析器读取 User-Agent 标头中的标识,并将其转换为结构化字段。下面三条固定字符串——一个桌面浏览器、一部手机和一个搜索引擎爬虫——会经过与交互式工具相同的解析器处理,随后列出解析器所应用的规则。
实例解析
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
- 浏览器
- Chrome 120.0.0.0
- 渲染引擎
- Blink
- 操作系统
- Windows 10/11
- 设备类型
- 桌面
- 设备
- 未知
- CPU 架构
- x64
- 机器人 / 爬虫
- 否
Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1
- 浏览器
- Safari 17.0
- 渲染引擎
- WebKit
- 操作系统
- iOS 17.0
- 设备类型
- 移动
- 设备
- Apple iPhone
- CPU 架构
- 未知
- 机器人 / 爬虫
- 否
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.216 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
- 浏览器
- Chrome 120.0.6099.216
- 渲染引擎
- Blink
- 操作系统
- Android 6.0.1
- 设备类型
- 机器人
- 设备
- Nexus 5X Build/MMB29P
- CPU 架构
- 未知
- 机器人 / 爬虫
- Googlebot
Windows 版 Chrome 发送 Windows NT 10.0,Windows 10 和 Windows 11 共用这一值,因此操作系统显示为 10/11。在 iPhone 上,Version/17.0 给出 Safari 版本,iPhone OS 17_0 给出 iOS 版本。Googlebot 字符串内嵌了一个完整的 Android 版 Chrome User Agent,但爬虫签名会最先检查,因此设备类型为 bot;浏览器和操作系统字段仍显示爬虫自称的身份。
关键规则
- 最先检查爬虫签名:Googlebot、Bingbot、DuckDuckBot、YandexBot、Baiduspider、Slackbot、Twitterbot 和 facebookexternalhit。一旦匹配,即使存在浏览器标识,设备类型也会设为 bot。
- 浏览器按固定顺序匹配——Edge(Edg/)、Opera(OPR/)、Samsung Internet、Firefox、Chrome、Safari,最后是 Chromium——因为大多数字符串也包含其他浏览器的标识。引擎随浏览器而定:Blink、Gecko 或 WebKit。
- 操作系统取自括号中的平台部分:iPhone、iPad、Android、Windows NT、CrOS、Mac OS X 或 Linux。Apple 版本号中的下划线会转换为点。
- 设备类型的判定:iPad、Tablet 标识或不含 Mobile 标识的 Android 为平板;iPhone 或含 Mobile 标识的 Android 为移动;Windows、macOS、Linux 和 ChromeOS 为桌面。
- 字符串中未说明的内容一律保持未知(JSON 输出中为 null),而不是猜测。只有浏览器和操作系统都匹配时,置信度才为高。
- 任何客户端都可以发送 Googlebot 的 User Agent。要确认是真正的 Google 爬虫,请对请求 IP 进行反向 DNS 查询,检查主机名是否以 googlebot.com 或 google.com 结尾,再通过正向查询加以确认。