网站抓取规则,移动端与桌面端怎样检查差异

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

网站抓取规则,移动端与桌面端怎样检查差异

检查移动端与桌面端的抓取规则差异,核心是分别用两类设备的 User-Agent 请求同一批 URL,对比服务器返回的状态码、正文和 robots.txt 的生效结果。搜索引擎普遍以移动端爬虫为主,但 robots.txt 的规则本身不区分设备,差异往往出在服务端根据 UA 做了跳转或屏蔽。下面用一个假设例子说明完整步骤。

假设例子:同一篇文章两端返回不同结果

假设你的站点有一篇文章 /post/100。桌面浏览器打开正常,手机打开却跳到 /m/post/100,而 /m/ 目录在 robots.txt 里被 Disallow。此时桌面爬虫能读到正文,移动爬虫可能只看到一个被禁止抓取的跳转目标。这个假设说明:抓取差异不一定写在 robots.txt 里,也可能藏在跳转逻辑中。

第一步:分别请求并记录原始响应

用命令行工具模拟两种 UA,只看服务器返回的原始内容,不要依赖浏览器渲染后的画面。

对比三项:状态码是否都是 200、跳转链是否不同、正文长度和主要文字是否一致。如果移动端返回 301 到另一个路径,就继续请求那个路径,确认它是否可抓取。

第二步:核对 robots.txt 对两端的实际约束

robots.txt 按路径和 User-Agent 分组,不按屏幕尺寸分组。你要确认移动爬虫使用的 UA 名称是否落在某条 Disallow 规则里。常见错误是只写了桌面爬虫的允许规则,却遗漏了移动爬虫对应的 UA 分组,导致移动端被默认限制。

检查项:

  1. 打开 https://example.com/robots.txt,找到 User-agent 行。
  2. 确认移动爬虫的 UA 名称是否单独成组,组内是否有 Disallow: / 或指向移动目录的规则。
  3. 如果移动端跳转到 /m/,检查该目录是否被禁止。
  4. 用抓取调试工具或日志验证该 UA 实际请求了哪些 URL。

需要区分:robots.txt 的抓取限制不等于索引移除。即使禁止抓取,页面仍可能因外部链接出现在结果中;要移除索引需要额外的机制,且不同搜索引擎支持情况须分别核查。

第三步:对比正文与关键资源

两端都返回 200 不代表内容一致。移动端常见问题是正文被折叠、图片用懒加载、关键文字放在需要交互才显示的区域。抓取工具看到的是 HTML 源码,不是点击后的画面。

对比方法:把两端返回的 HTML 保存成文件,搜索正文首段的关键词,确认它出现在源码里而不是脚本变量中。再检查 link rel="canonical" 是否两端都指向同一个规范 URL。如果移动端 canonical 指向自己而桌面端指向另一地址,规范信号会互相冲突。

适用条件与判断结果

这套检查适用于服务端根据 UA 输出不同 HTML、或存在独立移动域名的站点。如果你的站点是响应式设计、两端返回完全相同的 HTML,那么差异通常只出现在渲染阶段,应改用渲染对比而不是源码对比。

判断结果时注意:HTTPS 不保证安全无漏洞或排名;站点地图不保证收录。抓取规则只解决“能不能抓”,不解决“抓了之后是否被索引和排序”。

下一步:选取站点中流量最高的一批 URL,按上面的 UA 请求逐条记录状态码与正文长度,把不一致的 URL 列成清单,再回到 robots.txt 和跳转配置里逐项修正。

图1 图2

nginx