搜索抓取

移动优先抓取:蜘蛛看的是手机版还是桌面版

移动优先抓取下,蜘蛛主要以移动版页面作为参照,但桌面版抓取并没有完全消失。移动版内容缺失、跳转混乱或资源被拦,都会让蜘蛛拿到不完整的页面。这篇文章梳理蜘蛛抓取移动版时会核对哪些信号、三种常见建站方式的差别,以及怎么从日志和服务端确认被抓的到底是哪个版本。

搜索抓取

移动优先抓取:蜘蛛看的是手机版还是桌面版

移动优先不等于桌面版不再被抓

很多站长把移动优先理解成“蜘蛛只看手机版”,其实更准确的说法是:移动版页面是抓取和索引时的主要参照,桌面版抓取并没有完全消失。在实际日志里,你往往能同时看到移动 UA 和桌面 UA 的访问记录,只是前者的比重更大,尤其是页面主要面向手机用户的时候。对站点而言,重点不是去猜蜘蛛用哪个 UA,而是保证两个版本呈现的核心内容一致。

蜘蛛抓取移动版时会核对哪些东西

移动版被抓取时,蜘蛛依然是在解析一份 HTML 文档,只是会优先请求移动版对应的地址。下面几处出问题,抓取结果常常是不完整的:

  • 内容是否等价:正文、主标题、关键链接在移动版上是否存在。为了“手机上更简洁”而砍掉大半正文,是常见的丢内容原因。
  • 视口与可用性:缺少 viewport 设置、字号过小或按钮点不中,虽不直接阻止抓取,但会影响后续判断。
  • 资源能否加载:移动版如果依赖一段被 robots.txt 拦掉的脚本,或被防火墙按 UA 挡在外面,蜘蛛拿到的可能是个空壳。
  • 跳转是否稳定:桌面地址与移动地址之间来回跳、跳转链过长,都会消耗抓取时间。
  • 是否误加 noindex:移动模板里带了 noindex,桌面版却没有,是典型的配置失误。

三种常见建站方式的差别

响应式站点

桌面和移动共用一套地址,蜘蛛只需抓一个 URL。这种情况下要留意移动端首屏加载速度,以及被条件加载的内容在 HTML 里到底有没有。

独立移动站

需要保证桌面页与移动页之间的双向标注:桌面页用 alternate 指向移动版,移动版用 canonical 指回桌面版。标注写反或只写一边,会让蜘蛛在两套地址之间反复确认。

动态服务

同一个 URL 按 UA 返回不同 HTML,看起来省事,但如果服务端只认少数几个 UA,容易把正常抓取挡在门外。至少要让主流蜘蛛的 UA 拿到与真实用户一致的内容。

几个容易卡住抓取的细节

  1. 移动版页面是客户端渲染的空容器,正文靠接口回填,而接口需要登录或带特定参数。
  2. 把移动版静态资源放在被拦截的目录里,CSS 和 JS 都抓不到。
  3. 移动版与桌面版指向了不同的 canonical,导致蜘蛛在两条路径上摇摆。
  4. 移动端页面响应慢或经常超时,请求中断,抓取量自然下降。
不必追求“让蜘蛛多来”,先把移动版页面能被完整取回这件事做稳,很多连带问题会一起消失。

怎么确认蜘蛛抓的是哪个版本

比较直接的办法是看服务器日志:按 UA 分组统计不同爬虫对同一地址的请求情况,同时观察返回的状态码和响应体大小。如果移动 UA 拿到的响应明显偏小,或大量返回 3xx、5xx,就说明移动版这条路存在问题。也可以用抓取工具模拟移动版 UA 请求一遍,对比和浏览器里看到的内容差多少。

另外,可以在服务端按 UA 记录一份简单字段,比如 UA、URL、状态码、耗时。持续看一段时间,就能判断移动版抓取是否稳定,而不是靠感觉。

小结

移动优先抓取的核心问题很朴素:移动版是不是一份能独立成立、内容完整的页面。把内容对齐、标注写对、资源放开、速度稳住,抓取路径就不会在移动版这一层断掉。