搜索引擎的抓取策略早就转向移动优先。百度、Google、必应在大规模抓取时,主要使用移动端 UA 发起请求。对蜘蛛池来说,入口页是蜘蛛发现目标站 URL 的第一跳,如果这一跳在移动 UA 下表现异常,蜘蛛可能根本走不到后面。
为什么移动 UA 会影响入口页的发现效果
入口页本身内容很少,它的作用是把蜘蛛引向目标 URL。蜘蛛用移动 UA 请求入口页时,会先判断页面是否可抓取、是否有跳转或链接。如果服务器对移动 UA 返回了错误页、空白页或另一套结构,蜘蛛看到的入口页就和你在桌面浏览器里看到的不一样。
常见后果有三种:一是蜘蛛拿不到链接,URL 发现断在入口页;二是蜘蛛拿到了不同的跳转地址,抓取路径和你预期的不一致;三是入口页在移动端返回 4xx 或 5xx,蜘蛛降低回访频率。
三种处理方式与各自的风险
1. 同一份 HTML,响应式适配
最稳妥的做法是入口页不区分设备,桌面和移动 UA 返回完全相同的 HTML,链接和跳转逻辑也一致。样式用 CSS 做响应式,不影响蜘蛛。这样你只需要维护一份入口页,排查问题也简单。
2. 单独维护移动模板
有些程序会按 UA 返回不同的模板。如果只是为了给人看,问题不大;但如果移动模板里的链接被删减、跳转地址被替换,蜘蛛拿到的就是阉割版的入口页。两个模板长期不同步,很容易出现桌面能发现、移动发现不了的情况。
3. 按 UA 做跳转
用 UA 判断后 302 到 m. 子域或另一个域名,是风险最高的一种。蜘蛛可能跟随跳转,也可能因为跳转链过长、目标不可达而放弃。更麻烦的是,跳转目标如果对蜘蛛返回验证页或空页,整个入口页就白做了。
快速自查清单
- 用移动 UA 请求入口页,返回的 HTML 是否和桌面一致(除样式外)。
- 入口页里的目标链接,在移动 UA 下是否仍然存在且可访问。
- 移动 UA 请求是否返回 200,而不是 302、403 或 5xx。
- 如果有 m. 子域,它的跳转目标是否与主入口页一致。
- CDN 或 WAF 是否对移动 UA 有单独的拦截规则。
实操建议
- 入口页统一用响应式。不按设备分叉,减少蜘蛛看到不同版本的概率。
- UA 只用于统计。可以记录移动蜘蛛的访问量,但不要用它决定返回什么内容。
- 跳转尽量少。入口页到目标站最好一次跳转,避免 UA 判断后再套一层跳转。
- 定期用移动 UA 抽查。请求时带上主流移动蜘蛛 UA,对比桌面请求的返回体,看链接和状态码是否一致。
- 检查 CDN 缓存。如果移动和桌面共用缓存键但内容不同,可能出现缓存串版,让蜘蛛拿到错误页面。
入口页的移动端适配不需要复杂,核心是蜘蛛看到的和你看到的一致。一旦按设备分叉,排查成本会成倍增加。
蜘蛛池解决的是 URL 发现,入口页是这条链路的起点。移动 UA 处理不当,起点就断了。把入口页做成一份统一、可抓取、链接稳定的页面,比追求设备区分更有实际意义。