robots txt:移动端与桌面端怎样检查差异

📍 WDQWDWQD987AAAAA:216.73.216.84
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /60a3a01c1af8.html
📄

robots txt:移动端与桌面端怎样检查差异

检查移动端与桌面端的 robots.txt 差异,关键是看同一域名下两种抓取环境是否读取到同一份规则、是否因 User-Agent 匹配到不同指令。对第一次接触这个问题的人来说,起点应是先确认规则文件本身是否唯一,再确认目标爬虫的移动与桌面标识分别命中哪些记录。如果站点只有一份 robots.txt,且没有针对移动爬虫的单独分组,两端通常得到相同结论;如果存在 User-Agent 分组、通配符或路径规则差异,就必须逐条比对。

先判断两端读取的是不是同一份文件

robots.txt 按主机名和协议定位,同一主机通常只应有一份。移动端与桌面端若访问的是同一域名、同一协议,抓取工具请求的路径都是根目录下的 robots.txt。此时差异不来自文件位置,而来自请求时携带的 User-Agent 和解析规则。

检查时先记录两端实际请求的完整地址,确认没有因为测试环境、CDN 节点或跳转导致读到不同内容。若一端返回 200、另一端返回 404 或 403,问题就不在规则内容,而在文件可访问性。这里要区分“可能原因”和“已经定位的原因”:状态码不同只是现象,可能是缓存、回源或权限造成,不能直接断定是移动端被单独屏蔽。

按 User-Agent 分组逐条比对

robots.txt 的规则可以按 User-Agent 分组。桌面爬虫和移动爬虫可能使用不同标识,例如桌面用通用标识,移动用带移动标记的标识。检查步骤如下:

  1. 把两端请求使用的 User-Agent 字符串完整记录下来。
  2. 在 robots.txt 中从上到下查找第一个匹配的 User-Agent 分组。匹配通常按最长、最具体的标识优先,具体行为要以目标搜索引擎文档为准。
  3. 查看该分组下的 Allow 和 Disallow 规则,确认目标路径是否被限制。
  4. 如果某端没有专属分组,检查它是否落入 User-Agent: * 的通用分组。
  5. 对同一路径分别套用两端命中的规则,比较最终结果是允许还是禁止。

举例来说,假设 robots.txt 先写 User-Agent: * 并禁止 /private/,再写一段移动爬虫分组并只禁止 /mobile-only/。桌面端访问 /private/ 会被禁止,移动端如果命中移动分组且该分组没有禁止 /private/,则可能允许。这个例子是假设,用于说明分组顺序和匹配范围会直接改变结论。

用抓取测试工具验证,而不是只看文件

人工阅读规则容易漏掉通配符和结尾匹配。更可靠的做法是使用搜索引擎官方提供的 robots.txt 测试工具或抓取分析功能,分别以桌面和移动 User-Agent 请求目标 URL,看工具给出的“允许/禁止”判断。不同搜索引擎的支持范围和测试入口不同,需要分别核查,不能用一家的测试结果推断另一家。

测试时要选有代表性的 URL:首页、栏目页、详情页、带参数的页面、被规则覆盖的边缘路径。每类至少测一个,记录两端结果。若两端结果一致,说明当前规则对该爬虫没有制造差异;若不一致,回到分组和规则行定位是哪一条造成。

把检查结果落实到交付与验收

从交付结果倒推,一次完整的差异检查应产出:两端使用的 User-Agent 清单、robots.txt 原文或快照、逐 URL 的允许/禁止对照表、差异原因说明、需要修改的规则行。责任上,规则修改应由能改动站点根目录文件的人执行,验证由提出需求的人复核。

验收标准可以设为:对约定的代表性 URL,移动端与桌面端在目标搜索引擎测试工具中的判断与预期一致;若预期就是不同,则差异必须能对应到明确的 User-Agent 分组或规则行。注意,robots.txt 的抓取限制不等于可靠的索引移除。即使规则禁止抓取,已收录页面仍可能出现在结果中,因为抓取限制和索引移除是两件事。站点地图也不保证收录,它只是发现 URL 的辅助方式。

常见差异来源与判断条件

这些原因可能同时存在,不能看到一端被禁止就断定是移动端专属规则造成。先确认文件是否同一份,再确认 UA 匹配,最后才谈规则内容。

下一步:选取站点首页和一个典型内页,分别用桌面与移动 User-Agent 在目标搜索引擎的 robots.txt 测试工具中各测一次,把两次命中的分组和规则行抄下来对照。若结果不同,优先检查是否存在移动专属 User-Agent 分组;若结果相同,则移动端与桌面端在这两个 URL 上没有 robots.txt 层面的差异。

图1 图2

nginx