User-Agent 与爬虫标识速查

5 个速查板块 · 关联 4 款站内工具 · 数据最后核对 2026-10-05

UA 字符串里到底写了什么、怎么分辨搜索引擎爬虫与伪装爬虫、robots.txt 与 UA 的配合,以及为什么 UA 已经不该被完全信任。

User-Agent 是浏览器在每次请求里附上的一句自我介绍,内容包括浏览器类型、版本、操作系统、渲染引擎。它最初的设计目的是让服务器「按客户端能力返回合适的页面」。

现在它的处境有些尴尬:一方面仍被广泛用于统计与兼容处理,另一方面因为它可以被随意伪造,任何基于 UA 的拦截都不可靠。理解它「能做什么、不能做什么」,才能用对地方。

1UA 字符串的结构

一段典型的 UA 由几个用空格分隔的「产品/注释」片段组成,历史演进留下了不少冗余信息。

片段含义示例
Mozilla/5.0历史遗留的兼容标记几乎所有浏览器都带,与是否为 Mozilla 无关
平台信息操作系统与版本如 Windows NT 10.0; Win64; x64
渲染引擎排版引擎与版本如 AppleWebKit/537.36、Gecko/20100101
浏览器标识浏览器名称与主版本如 Chrome/120.0.0.0、Safari/537.36
移动标识是否为移动设备如 Mobile、iPhone、Android
爬虫标识机器人名称与说明链接如 Googlebot/2.1 常附 +http://www.google.com/bot.html

Chrome 与 Edge 的 UA 里同时出现 `AppleWebKit`、`Safari` 和 `Chrome`,这纯粹是历史兼容的结果——很多老站点靠 `Safari` 字样判断可用功能。所以「看到 Safari 就以为是苹果浏览器」是常见的错判。

2常见搜索引擎爬虫标识

主流搜索引擎的爬虫都会在 UA 里标明身份并给出说明链接,但标识本身可以被伪造,认真验证要配合反向 DNS 查询。

爬虫UA 中的关键标识用途
GooglebotGooglebot/2.1(桌面)、Googlebot-Image、Googlebot-News谷歌搜索索引与各类专项抓取
Googlebot 移动版Googlebot/2.1 且含 Android 或 iPhone以移动端身份抓取,用于移动优先索引
Bingbotbingbot/2.0必应搜索
BaiduspiderBaiduspider百度搜索
YandexBotYandexBot/3.0Yandex 搜索
DuckDuckBotDuckDuckBot/1.1DuckDuckGo 搜索
社交平台预览facebookexternalhit、Twitterbot、Slackbot抓取页面生成分享卡片
合法但要留意AhrefsBot、SemrushBot、GPTBot 等SEO 分析或 AI 训练,是否放行由你决定

把「UA 里含 Googlebot」当作「就是谷歌」是不严谨的。真正的验证方式是查该 IP 的反向 DNS 是否落在 `googlebot.com` 或 `google.com` 域名下,再正向解析回来核对一致。仅凭 UA 判断,任何人都能伪装成搜索引擎爬虫。

3桌面与移动设备的 UA 特征

做响应式站点时,UA 常用于粗略区分设备类型。以下是几个关键特征词。

设备类型特征词典型示例片段
Windows 桌面Windows NTWindows NT 10.0; Win64; x64
macOS 桌面MacintoshMacintosh; Intel Mac OS X 10_15_7
iPhoneiPhoneiPhone; CPU iPhone OS 17_0 like Mac OS X
iPadiPad较新版本可能上报为 Macintosh,需结合触控特征判断
Android 手机Android 且含 MobileAndroid 14; Pixel 8 后跟 Mobile
Android 平板Android 但不含 Mobile区分手机与平板的关键就在这里
微信内置浏览器MicroMessenger用于判断是否在微信内打开
小程序 / WebViewminiProgram、wv混合应用与内嵌页面的常见标记

「UA 里有没有 Mobile」是区分手机与平板最常见的判断依据,但现在更推荐用「屏幕宽度 + 触控能力」这类特征做响应式判断。用 UA 做设备判断只适合做统计与兜底,不适合做核心功能分支。

4robots.txt 与爬虫识别的配合

robots.txt 是放在站点根目录的一份约定,告诉爬虫「哪些路径可以抓、哪些不要抓」。它是协议而非强制机制。

位置固定
必须是根目录下的 /robots.txt,放子目录不生效
语法核心
User-agent 指定适用对象,Disallow 指定禁止抓取的路径,Allow 可做例外
通配规则
* 匹配任意字符,$ 匹配结尾,可用于排除带参数的地址
配合方式
期望被收录的页面应允许抓取,同时在页面里用 noindex 明确「不要收录」,两者职责不同
sitemap 声明
可在 robots.txt 里用 Sitemap: 声明站点地图地址,方便爬虫发现页面
非强制
恶意爬虫完全无视 robots.txt,真正的防护要靠限速、鉴权与行为识别

5UA 不可信之后怎么办

UA 可以被任意伪造,而且主流浏览器正在冻结甚至减少 UA 里的信息量,以保护隐私。这意味着依赖 UA 做判断的方案会越来越不牢靠。

需求不推荐的做法更稳妥的做法
区分设备布局解析 UA 判断是不是手机响应式设计 + 视口宽度 + 触控能力检测
投放不同页面按 UA 跳到 /m/ 移动站一套响应式页面,避免多套内容造成的收录与维护问题
判断浏览器能力看 UA 猜支持哪些特性功能检测:直接判断 API 是否存在
识别真实爬虫只看 UA 里的爬虫标识反向 DNS 校验 + IP 段核对 + 访问频率分析
获取设备信息从 UA 里抠细节使用客户端提示(Client Hints)按需获取
做统计报表把 UA 当作精确数据把 UA 视为参考,结合其他信号交叉验证

UA 冻结(User-Agent Freezing)已经在主流浏览器推行,即把版本号固定为少数几个值,减少可用于指纹识别的信息。现在写新代码时,应该默认「UA 只能提供粗粒度提示」,把关键判断放在功能检测与响应式设计上。

关于「User-Agent 与爬虫标识速查」的常见问题

User-Agent 具体包含哪些信息?

一段 UA 通常包含四类信息:平台信息(操作系统与版本,如 Windows NT 10.0 或 iPhone OS 17_0)、渲染引擎(如 AppleWebKit/537.36 或 Gecko)、浏览器标识(名称与主版本,如 Chrome/120.0.0.0)、以及设备类型标记(如 Mobile、iPad)。最前面往往还有一个 Mozilla/5.0,那是历史兼容留下的标记,几乎所有浏览器都带,不代表它真的是 Mozilla。需要注意的是这些字段都可以被客户端任意设置,所以 UA 只能作为参考信号,不能作为可信依据,尤其不能用于安全判断。

怎么判断来访的是不是真的搜索引擎爬虫?

不能只靠 UA 里的标识,因为它可以随意伪造。可靠的验证需要三步:第一,看该请求的来源 IP 是否属于搜索引擎公布的 IP 段;第二,对该 IP 做反向 DNS 查询,看结果域名是否落在官方域名下(例如谷歌爬虫应落在 googlebot.com 或 google.com);第三,把反向解析得到的域名再做一次正向解析,确认解析回的 IP 与原始来源 IP 一致。三步都通过才能确认身份。另外可以观察行为特征:真实搜索引擎爬虫通常会按一定频率、有规律地抓取,并遵守 robots.txt;伪装的采集器往往抓取猛烈且无视规则。

robots.txt 能阻止爬虫抓取我的页面吗?

对遵守规则的爬虫有效,对恶意爬虫无效。robots.txt 是一份「君子协定」——合规的搜索引擎爬虫会读取并遵守,因此你用它来引导收录行为是有效的;但任何想采集数据的人都可以直接无视它,因为它是纯文本约定,没有强制力。所以 robots.txt 的正确用途是治理索引(告诉搜索引擎哪些路径不必抓、哪些不必收录),而不是安全防护。防采集要靠限速、验证码、鉴权、行为识别等真正的技术手段。还要注意不要用 robots.txt 去屏蔽敏感目录,那等于把目录结构公开告诉所有人。

为什么说不要用 UA 判断浏览器功能?

因为 UA 是可以伪造的字符串,而且浏览器厂商正在主动减少它携带的信息量。用它来「猜」浏览器支持什么功能,会面临两类问题:一是判断错误——伪装 UA 的客户端会让你的分支逻辑走错;二是维护困难——每出新浏览器版本就要更新判断规则,尤其是 Safari 与 Chrome 的 UA 大部分相同但特性支持并不完全一致。正确做法是功能检测,也就是在运行时直接判断某个 API 是否存在(例如检查某个方法是否可调用),这样无论客户端是什么浏览器、UA 怎么写,判断结果都准确。这也是现代前端库普遍采用的思路。

内容标识:本页内容由人工智能辅助生成,并经人工核对与编辑。详见 人工智能生成内容标识说明。
内容说明:本页速查数据由本站自行整理,事实性内容以对应官方规范与文档为准,未复制第三方速查表或百科的表述。数据最后核对日期:2026-10-05。若发现错误或已更新的标准,欢迎通过页脚反馈入口告知。