搜索抓取

蜘蛛来访时看的是哪套页面:移动优先索引下的抓取路径

蜘蛛默认以移动端身份抓取,它看到的那份 HTML 未必是你在电脑上看到的那份。本文梳理响应式、独立移动站、同 URL 动态分发三种实现方式对抓取路径的不同影响,并给出验证蜘蛛实际拿到哪个版本的检查方法。

搜索抓取

蜘蛛来访时看的是哪套页面:移动优先索引下的抓取路径

不少站点同时存在桌面版和移动版两套页面,或者用同一个 URL 根据 User-Agent 返回不同的 HTML。蜘蛛现在默认以移动端身份来访,所以它拿到的那份 HTML,未必是你在电脑浏览器里看到的那份。抓取和索引对不上时,差异常常就出在这里。

移动优先到底改了什么

最核心的一点是:蜘蛛的默认抓取身份从桌面 UA 换成了移动 UA,评估对象也以移动版本的内容、链接和结构化数据为准。注意这里说的是抓取端拿到的 HTML,不是页面渲染完在你眼前的样子。

  • 蜘蛛用移动 UA 发起请求,视口按移动端计算
  • 以移动版 HTML 来判断正文内容、内链和标注
  • 如果移动版内容比桌面版少,判断依据就是少的那份

三种实现方式,抓取路径差别很大

响应式:一套 HTML,一套 URL

对蜘蛛来说最省事,抓一份就等于拿到全部内容与链接。需要注意的是别把正文用 display:none 长期隐藏,也别让关键内容只在宽屏断点下才由脚本渲染出来。

独立移动站:两套 URL,两条路径

www 和 m 各自被抓取。如果 m 站的导航被折叠成需要点击才展开的脚本菜单,或者只保留几个热门入口,蜘蛛顺着 m 站走,能发现的 URL 就会少一截。另外要确认 m 站的 robots.txt 没有误封路径——不少站点在移动站上直接复制了一份旧的 robots 文件,把不该挡的路挡掉了。

同 URL 动态分发:方便,但对缓存敏感

一个 URL 按 UA 或屏幕判断返回不同 HTML。这种做法对缓存层很不友好:如果 CDN 没有正确区分 UA,蜘蛛可能拿到桌面版缓存,普通用户也可能拿到移动版。需要用 Vary: User-Agent 明确告知缓存层,并且实际验证不同 UA 下返回是否稳定一致。

抓取路径上常见的几个坑

  1. 移动版内链比桌面版少,从首页到详情页的点击深度被拉长
  2. 内容需要交互或滚动到底才加载,而蜘蛛不一定触发这些动作
  3. m 站与 www 之间的跳转形成环,反复重定向消耗抓取次数
  4. 移动版误加了 noindex,或 robots 屏蔽了本该抓取的目录
  5. 移动版图片、脚本体积更大,抓取开销被静态资源占走

怎么确认蜘蛛看到的是哪一版

最直接的办法是用移动 UA 请求目标 URL,把返回的 HTML、状态码、canonical 和内链,与你在电脑上看到的做一次比对。日志里也可以按 UA 分组,看移动 UA 的抓取频次、命中的状态码分布。

检查时至少覆盖:首页、一个栏目页、一个详情页,以及移动站的 robots.txt 本身。

稳妥的取舍

能用响应式就尽量用响应式,一套 URL 一套 HTML,抓取路径最短,出问题的环节也最少。确实需要两套站的话,尽量保证两边正文内容和内链结构基本一致,并且在 robots、canonical 上一开始就统一口径,别让两边各说各话。

至于到底是哪一版被当成了主版本,不用猜。拿两套 UA 各抓一遍,对比返回值,答案通常一次就能看清楚。