X-Robots-Tag
X-Robots-Tag 是一个 HTTP 响应头部字段,用于向网络爬虫和搜索引擎机器人发出指令,告知其应如何处理特定 URL(包括网页、图片、PDF 等非 HTML 资源)的索引和在搜索结果中的呈现方式[1]。该字段是 Robots 排除协议(Robots Exclusion Protocol)的一部分,由 Google、Bing 等主流搜索引擎支持,并被视作一种事实上的行业标准[2]。
| X-Robots-Tag | |
|---|---|
| 中文名 | X-爬虫标签 |
| 英文名 | X-Robots-Tag |
| 类型 | HTTP 响应头部 |
| 所属协议 | Robots 排除协议(REP) |
| 发布年份 | 约 2007 年 |
| 关键功能 | 控制页面或资源的索引、链接跟踪和搜索结果呈现 |
| 支持格式 | HTML、PDF、图像、视频、Office 文档等 |
X-Robots-Tag 的设计初衷是为非 HTML 内容(如 PDF 文件、图像和视频)提供与 HTML 网页的 <meta name="robots"> 标签同等的爬虫指令控制能力[3]。由于这些格式无法通过 HTML 元标签嵌入指令,便需要一种基于 HTTP 响应头部的替代方案。
该字段由 Google 和 Yahoo! 于 2007 年左右开始支持[3]。随着其得到广泛采纳,X-Robots-Tag 被纳入 Robots 排除协议(REP)的技术体系,共同构成网站管理员与搜索引擎爬虫之间的通信机制。值得注意的是,“X-”前缀通常表示实验性或非标准化头部。虽然 X-Robots-Tag 从未成为正式的 IETF 标准,但它作为事实标准被广泛采用。
X-Robots-Tag 作为服务器响应的一部分,通过 HTTP 头部字段进行传递。当爬虫向服务器请求资源时,服务器在 HTTP 响应中包含该字段,爬虫读取并解析其指令,以决定是否对该资源进行索引、跟踪链接或如何显示在搜索结果中[1]。
X-Robots-Tag 的基本语法形式为 X-Robots-Tag: directive1, directive2, ...,支持一个或多个指令,多个指令之间以逗号分隔。
指令适用所有爬虫,但也可以通过指定爬虫名称来限定特定爬虫:
X-Robots-Tag: googlebot: noindex, nofollowX-Robots-Tag: bingbot: noarchive
X-Robots-Tag 支持的指令集与 HTML <meta name="robots"> 标签基本一致[1]。常用指令包括:
- all:对索引或服务无任何限制。此为默认行为。
- noindex:要求爬虫不将该资源收录至搜索引擎的索引中,即资源不会出现在搜索结果中。
- nofollow:要求爬虫不跟踪该资源页面上的任何超链接。
- none:等同于同时使用 noindex 和 nofollow。
- nosnippet:防止搜索引擎在搜索结果中显示文本摘要或视频预览。
- noarchive:禁止搜索引擎在搜索结果中提供此页面的缓存副本链接。
- noimageindex:防止页面中的图像被 Google 图片搜索收录(Google 特定)。
- unavailable_after:指定一个日期和时间,在此之后爬虫应从搜索结果中移除该页面(已弃用)。
X-Robots-Tag、Robots.txt 和 Meta Robots 标签是 Robots 排除协议的三大核心组件,三者功能互补:
- robots.txt:控制爬虫的“抓取”行为(crawling)。它规定了爬虫是否可以访问整个站点、特定目录或特定文件。若一个 URL 在 robots.txt 中被 Disallow,爬虫将不会抓取该页面,从而无法读取到其中的 X-Robots-Tag 指令[4]。
- X-Robots-Tag:控制资源的“索引”行为(indexing)。它适用于所有资源类型,包括非 HTML 文件,用于决定内容是否应该被放入搜索引擎的索引中[1]。
- meta robots:功能与 X-Robots-Tag 相同,但仅能应用于 HTML 文档内部,无法控制非 HTML 资源。
因此,要有效从搜索结果中移除一个页面,通常应允许爬虫抓取(不在 robots.txt 中屏蔽该 URL),但通过 X-Robots-Tag 的 noindex 指令禁止索引。
- 控制非 HTML 文件的索引:通过 HTTP 头部的 X-Robots-Tag 指令,管理员可以阻止 PDF、Word 文档、图片、视频等文件被搜索引擎收录。
- 精细化 SEO 管理:开发者可以利用该标签为不同搜索引擎设定规则(如
X-Robots-Tag: googlebot: noindex, bingbot: index),实现差异化控制。 - 管理大站点的抓取预算:对于大型网站,X-Robots-Tag 在不阻止爬虫抓取的情况下精细管理索引,有助于搜索引擎更高效地抓取和索引核心内容。
- 处理动态 URL 和会话 ID:当内容管理系统或网站架构不易于直接编辑页面源代码时,通过服务器配置添加 X-Robots-Tag 是实施 robots 指令的有效替代方案。
- 自愿性遵守:作为 Robots 排除协议的一部分,X-Robots-Tag 基于自愿遵守原则,并非所有网络爬虫(尤其是恶意爬虫)都会遵从其指令。
- 依赖抓取:爬虫必须先抓取到资源,才能读取到 HTTP 响应头部中的 X-Robots-Tag 指令。若在 robots.txt 中屏蔽了该资源,则指令不会被读取[4]。
- 非安全机制:X-Robots-Tag 不能作为一种安全访问控制机制。它只是一个向搜索引擎发出的指令,无法阻止恶意用户或爬虫直接访问资源。若要实现真正的访问控制,应使用服务器端身份验证或 IP 限制等措施。
网站管理员或开发者可通过多种方式验证 X-Robots-Tag 的设置是否正确:
- 浏览器开发者工具:在 Chrome 等浏览器中,使用开发者工具(通常快捷键为 F12)的“网络”(Network)面板,查看特定资源 HTTP 响应头的详细信息。
- 命令行工具:使用
curl -I <URL>命令,查看服务器返回的完整 HTTP 头部信息。 - 搜索引擎官方工具:Google 的 Search Console 提供了 URL 检查(URL Inspection)工具,可以查看 Googlebot 抓取特定 URL 时所看到的 X-Robots-Tag 信息[1]。
- Robots.txt
- Meta Robots 标签
- Robots 排除协议(REP)