现在主流搜索引擎基本以移动优先索引为主,蜘蛛默认用移动端 UA 来抓取和评估页面。对蜘蛛池来说,这件事很直接:入口页如果只在桌面版做了内容,移动版是空壳或者干脆跳走,蜘蛛看到的很可能就是那个空壳,它不会替你去点桌面版再看一遍。
移动端蜘蛛实际看到的是什么
同一个入口页,在不同实现方式下,移动蜘蛛拿到的 HTML 可能完全不同。差异往往不在内容本身,而在链接、状态码和响应体积上。
三种常见的移动端实现
- 响应式:桌面和移动共用一份 HTML,靠 CSS 适配。对蜘蛛最友好,链接和正文基本一致,出问题的概率最低。
- 独立移动站:例如 m 子域或另一个域名。需要移动版与桌面版互相声明对应关系,canonical 和 alternate 指错,蜘蛛就容易把两套页面当成两份内容。
- 动态服务:同一个 URL,按 UA 返回不同的 HTML。最容易翻车——CDN 或缓存层如果没有正确区分 UA,可能把桌面 HTML 回给移动蜘蛛,或者反过来。
入口页最容易踩的几个坑
- 移动版只留一句“请在电脑上访问”,蜘蛛到这里就断了。
- 正文和链接塞进图片或懒加载区块,不滚动就不出现在初始 HTML 里。
- 移动版为了“精简”,把出站链接砍到只剩导航。
- 移动版与桌面版 canonical 互相指错,蜘蛛在两套页面之间来回。
- 缓存规则把桌面 HTML 返回给移动 UA,日志里看不出异常,实际抓的是错版本。
蜘蛛池场景下要多看一层
入口页的核心任务是把蜘蛛带到目标 URL 前面。如果移动版把出站链接压掉了,这个入口页对蜘蛛来说价值就大打折扣。所以看入口页的移动端适配,不能只看“能不能打开”,要看移动 UA 下页面的链接结构是否还在。
日志里怎么验证
把抓取日志按 UA 分组,分别看移动蜘蛛和桌面蜘蛛请求的响应码、响应体积和请求路径。如果移动 UA 的请求大量返回 302,或者返回 200 但体积明显偏小,通常说明移动版内容被替换掉了。这一步不用很复杂的工具,按 UA 前缀分个类就能看出来。
一份可执行的自查清单
- 用移动 UA 直接请求一次入口页,看状态码和 HTML 里有没有链接。
- 如果是响应式,确认正文和链接在移动视口下没有被隐藏到初始 HTML 之外。
- 如果是独立移动站,检查移动版与桌面版的互相指向是否正确。
- 如果是动态服务,检查缓存策略是否按 UA 区分,避免版本串号。
- 依赖 JS 渲染的入口页,关键的出站链接尽量放在初始 HTML 里。
- 在日志里按 UA 分组,核对状态码、响应体积和抓取路径是否对得上。
蜘蛛看到的那个页面,才是你实际交给它的页面,不是你浏览器里打开的那个。
不建议的做法
只对蜘蛛 UA 返回移动版内容、对真实用户返回桌面版,或者反过来,属于典型的伪装行为。蜘蛛池的入口页本来就不需要在这上面冒险,把两套版本做成一致的内容,成本并不高。
移动端适配本身不是什么高深配置,多数问题都出在“移动版变空”这一层。把移动 UA 下的状态码、链接和响应体积校准好,后面的跳转和链接才有意义。