做蜘蛛池的时候,很多人只盯着 PC 端看入口页长什么样,却忽略了一个事实:搜索引擎的移动蜘蛛和 PC 蜘蛛在抓取时 UA 是分开的,请求到的页面也可能不是同一份。入口页在 PC 上返回 200 看着正常,移动蜘蛛拿到的却是一个空壳、一次跳转,或者一份被裁掉正文的内容,这种情况并不少见。
移动蜘蛛和 PC 蜘蛛为什么不是一回事
现在搜索引擎普遍以移动端优先索引,也就是说移动版本才是判断页面内容的主要依据。对蜘蛛池来说,入口页本身不追求被收录,但它的作用是让蜘蛛顺利进来、顺着链接往下走。如果移动蜘蛛一进门就撞上适配问题,后面的路径基本就断了。
常见的适配方式有三种:
- 响应式:同一套 URL、同一份 HTML,靠 CSS 媒体查询适配。对蜘蛛最友好,两种 UA 拿到的是同一份源码,维护成本也最低。
- 独立 m 站:PC 用 www,移动用 m 子域。这时要处理好两个域名之间的对应关系,并确保 m 站本身能正常抓取,别只做跳转不做内容。
- 同 URL 按 UA 动态返回:根据 UA 返回不同模板。这种方式最容易做过头,一旦两端内容差异过大,就接近了内容伪装。
移动蜘蛛来访时容易踩的几个坑
- 移动版是纯 JS 渲染,源码里只有一个空容器,蜘蛛不执行脚本时等于什么都没拿到。
- 移动 UA 被服务器当成异常流量直接拦截,返回 403 或空响应。
- 移动版把正文和链接裁掉,只剩下头部导航和底部版权。
- PC 和移动的入口链接不一致,移动端少了几条通往下一层的出口。
- m 站没做 HTTPS,或者证书对子域不生效,蜘蛛直接报错。
自查方式:别只看 PC 的渲染结果
最直接的办法是把 UA 换成移动蜘蛛的标识,请求几个入口页,对比返回的 HTML 源码。重点看三件事:状态码、正文片段、页面里的出站链接。然后再翻服务器日志里移动 UA 的抓取记录,如果移动蜘蛛很少出现,或者出现后状态码集中在 4xx、5xx,基本可以判定适配环节有问题。
判断标准其实很简单:同一个入口页,PC 蜘蛛和移动蜘蛛都应该能读到内容主体和通往下一层的链接,两端差异只应该出现在排版上,而不是内容有没有。
给蜘蛛池的实际建议
- 入口页优先用响应式,少引入 UA 判断逻辑,逻辑越少出错越少。
- 如果确实要分域名,确保 m 站能被独立抓取,不要用 JS 跳转代替内容本身。
- 无论哪种方案,入口页的核心链接都要在源码里可见,不依赖脚本生成。
- 定期比对两端返回的 HTML,把差异控制在排版范围内。
- 不要用移动端返回完全不同的内容来“引导”蜘蛛,这类做法一旦被识别,代价远大于收益。
移动端适配本身不是什么高深技术,它只是入口页能不能被蜘蛛读完的前提。把它当成基础设施来做,而不是当成一个可以省掉的环节,蜘蛛池的抓取路径才是通的。