robotstxt,移动端与桌面端抓取规则差异怎么检查

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

robotstxt,移动端与桌面端抓取规则差异怎么检查

检查移动端与桌面端在 robots.txt 上的差异,核心不是看文件本身有没有两套,而是看同一份 robots.txt 被不同 User-Agent 请求时,是否返回了不同内容,以及移动端页面实际引用的资源路径是否落在被禁止的目录里。最直接的做法是用移动端和桌面端的 User-Agent 分别请求同一个 robots.txt 地址,逐行比对返回结果,再结合页面级抓取测试确认规则对具体 URL 的实际效果。

先确认 robots.txt 是否按 UA 返回不同内容

同一个域名下,服务器可能根据 User-Agent 返回不同的 robots.txt。检查方法是用命令行工具分别带桌面和移动 UA 请求:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" https://example.com/robots.txt

curl -A "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X)" https://example.com/robots.txt

把两次输出保存到文件后做差异比对。结果分三种情况:完全一致,说明没有按 UA 分流;存在差异,要判断差异是有意设置还是配置错误;其中一次返回 404 或 403,说明该 UA 下没有可用规则,抓取行为会按“无限制”处理,这通常不是预期结果。

检查 User-agent 段的匹配与继承关系

robots.txt 的规则按 User-agent 分组,组内规则只对匹配的爬虫生效。要查的是:移动端爬虫是否有单独的 User-agent 段,以及没有单独段时是否落到通配符 User-agent: * 上。

注意:不同搜索引擎对 User-agent 名称的识别和支持范围不同,需要针对目标搜索引擎分别核对,不能默认一套名称通用。

用页面级抓取测试验证实际效果

比对文本规则只是第一步,规则对具体 URL 是否真正生效,要用抓取测试工具验证。分别以移动端和桌面端身份测试同一个 URL,观察返回的抓取状态。

  1. 选一个移动端和桌面端都会访问的代表性 URL,比如首页、列表页、详情页各一个。
  2. 在抓取测试中切换 UA 或设备类型,分别请求这些 URL。
  3. 记录每次的结论:允许抓取、被 robots.txt 阻止、还是因其他原因失败。
  4. 对比同一 URL 在两种身份下的结论是否一致。

判断标准:如果桌面端允许、移动端被阻止,说明移动端用户可能无法通过搜索触达该页,需要确认这是否为有意设置。如果两端结论一致,说明 robots.txt 层面没有造成端间差异,问题可能在别处。

检查移动端专属路径是否被误禁

移动端常使用独立路径或参数,例如 /m/ 前缀、?mobile=1 参数、或独立的移动子域。这些路径如果被 Disallow 规则覆盖,移动端抓取会被整体挡住。

这里要区分“可能原因”和“已定位原因”:URL 命中 Disallow 是已定位的阻止原因;而移动端页面未被收录,可能是阻止、也可能是规范标签指向桌面版、内容质量等其他原因,不能只凭 robots.txt 下结论。

核查 sitemap 与索引相关声明的端间一致性

robots.txt 中的 Sitemap 声明和抓取限制是两件事。要分别检查:

如果发现移动端 URL 未提交且被部分阻止,优先修正 robots.txt 规则,再单独处理索引问题,不要指望一条 Disallow 解决收录。

可执行的检查清单

  1. 用桌面和移动 UA 分别请求 robots.txt,保存并比对内容差异。
  2. 列出所有 User-agent 段,确认移动端爬虫的规则来源。
  3. 用抓取测试工具对代表性 URL 做双端验证,记录结论。
  4. 交叉比对移动端 URL 模式与 Disallow 路径,确认是否误禁。
  5. 核对 sitemap 声明和移动端 URL 提交情况。
  6. 对发现的差异逐条标注:有意设置、配置错误、还是待确认。

完成比对后,下一步是把确认的配置错误整理成修改项,在测试环境改完后用同样的双 UA 请求方式复验,确认两端行为符合预期再上线。

图1 图2

nginx