搜索抓取

移动版和 PC 版:蜘蛛抓取时看的是哪一个页面

蜘蛛有桌面和移动两种身份,同一个 URL 可能返回两份不同的 HTML。移动适配做成响应式、动态服务还是独立 m 站,抓取结果差别很大:移动版删掉的正文和内链,蜘蛛同样看不到;缓存配置不当还会让两个版本混着返回。本文梳理三种做法的抓取风险,并给出核对两版内容与链接是否一致的方法。

搜索抓取

移动版和 PC 版:蜘蛛抓取时看的是哪一个页面

同一个 URL,蜘蛛可能拿到两份不同的 HTML

现在的蜘蛛并不只有一种身份。搜索引擎会派出带移动标识的抓取程序,也会派出桌面抓取程序,两者请求同一个地址时,站点很可能返回不同的 HTML。这意味着“蜘蛛抓到了什么”其实取决于它带着哪个 UA 来。

如果你的站点对移动端做过特殊处理,这件事就不只是适配问题,而是抓取问题:蜘蛛拿到的版本里有没有正文、有没有内链、有没有正确的 canonical,都会影响它对页面的判断。

三种常见做法,抓取风险各不相同

响应式:一个 URL、一套 HTML

路径最简单。无论什么 UA 来,返回的都是同一份 HTML,CSS 负责在不同屏幕上表现不同。蜘蛛不需要判断版本,也不存在“哪一版更全”的问题,这是目前麻烦最少的方案。

动态服务:同一个 URL 按 UA 返回不同 HTML

服务端判断 UA,给移动蜘蛛返回移动版 HTML,给桌面蜘蛛返回桌面版。地址只有一个,内容却有两套。风险在于:两套内容差异越大,越容易被当成针对蜘蛛的特殊返回;同时 CDN 或缓存层如果只按 URL 做缓存键,就可能把移动版缓存下来发给桌面蜘蛛,或者反过来。如果确实要走这条路,Vary: User-Agent 要配置正确,缓存键要能区分 UA。

独立移动域名:两套 URL、两套内链

m.example.com 和 www.example.com 各自有地址、各自有内链。这时要看两件事:一是两边的地址关系有没有写清楚,canonical 指向同一份内容,alternate 标注好对应版本;二是两边的内链是否互相支撑。常见问题是移动版首页只链向移动版页面,桌面版只链桌面版,结果是两套站各自成为对方的孤岛,蜘蛛在其中一套里发现的 URL,在另一套里没有入口。

为了“移动体验”删掉的正文,蜘蛛也看不到

不少移动版页面为了加载速度,去掉了段落、表格、结构化数据,只保留标题和一小段摘要。用户看到的是更轻的页面,蜘蛛看到的则是一份内容更薄的 HTML。如果搜索引擎以移动版为准来评估页面,这些被删掉的内容就不会进入判断。

内链也是同样的道理。移动版常常把导航折叠、把相关阅读砍掉,蜘蛛沿着移动版内链走,能到达的 URL 会明显少于桌面版。做移动适配时,正文和主要内链建议保持一致,至少不要出现“桌面版有、移动版全无”的断裂。

移动站用 JS 跳转,蜘蛛可能停在半路

有些站点用脚本判断屏幕宽度或 UA,然后跳转到 m 域名。如果脚本执行失败或被拦截,蜘蛛可能停在原页面,也可能落在跳转后的地址上,抓取路径就变得不稳定。相比之下,服务端的 301/302 跳转对蜘蛛来说更明确,也更容易在日志里记录和排查。

怎么确认蜘蛛拿到的是对的那一版

  • 用工具或命令行分别以移动 UA 和桌面 UA 请求同一批代表页面,对比状态码、title、canonical 和正文长度。
  • 检查缓存配置,确认移动版和桌面版不会被混着返回。
  • 翻服务器日志,看不同 UA 的抓取比例是否和预期一致,有没有整批页面只被一种 UA 抓过。
  • 抽查移动版的内链,看主要栏目和详情页是否都能从移动版入口走到。
与其纠结蜘蛛“更喜欢”哪一版,不如让两个版本的内容和链接关系保持一致,把地址之间的对应关系写清楚。这样无论来的是哪种 UA,它拿到的都是同一份信息。