很多蜘蛛池入口页在桌面浏览器里看着正常,但搜索引擎爬虫现在大多以移动端 UA 为主发起抓取。同一个 URL,用移动 UA 请求和用桌面 UA 请求,返回的 HTML 可能完全不同——被拦截的资源、被隐藏的链接、被折叠的内容,都会影响 URL 发现。下面整理移动端适配里几个容易被忽略的环节。
移动优先索引下,蜘蛛优先看哪个版本
主流搜索引擎的索引判断已经从桌面优先转向移动优先,含义是爬虫更多以移动 UA 抓取页面,并用移动端渲染结果来判断页面内容与链接。如果入口页对移动 UA 做了差别对待,比如给手机访客返回精简版、给桌面返回完整版,那蜘蛛看到的往往是那个精简版。
这里有个常见误解:以为移动端精简版更快,对抓取更友好。速度快本身不是坏事,但如果精简版里少了指向下一步的链接,蜘蛛就断在入口页了。加载速度替代不了链接的完整性。
响应式和独立 M 站,各自容易出问题的地方
响应式:链接没少,但可能被样式藏起来
响应式站点通常用 CSS 媒体查询控制显示。问题在于:桌面端用 display:none 隐藏、移动端才展示的模块,用桌面 UA 抓时就是隐藏链接;反过来也一样。更麻烦的是,有些模板靠 JS 监听窗口宽度变化才把内容写进 DOM,蜘蛛渲染时的默认视口不一定触发那段逻辑。
独立 M 站:跳转链和 UA 判断容易出岔子
桌面站跳 M 站、M 站又跳回桌面站,这种双向跳转如果判断写得粗,容易出现循环,或者把蜘蛛反复弹来弹去。另外 M 站域名常常不在同一份 robots.txt 的覆盖范围内,容易出现一边放开一边限制,蜘蛛进得来却走不深。
移动端渲染时容易被挡住的链接
- 汉堡菜单里的导航:菜单内容要点击后由 JS 插入的话,蜘蛛渲染时不一定会去点,导航链接可能压根没进入 DOM。
- 整块懒加载的列表:图片懒加载本身没关系,但不少站点把整个列表项连同里面的链接一起做成滚动到才加载。
- 移动端专属的遮罩层:全屏遮罩如果盖住内容区,用户看不到,蜘蛛渲染出的可见文本也可能被判定为数量很少。
- 唤起 App 的脚本:部分页面会尝试跳 App 或走自定义 scheme,这类脚本对爬虫没有意义,极端情况下还会干扰渲染过程。
怎么自己验证一次
- 用命令行以移动 UA 请求入口页,确认返回的 HTML 里含你期望的链接,而不是只返回一个空壳。
- 对比移动 UA 与桌面 UA 两次返回的链接数量与锚文本,差异大的位置就是排查重点。
- 在浏览器里模拟移动设备并限制部分脚本,观察导航链接是否真的存在于最终 DOM。
- 翻访问日志,按 UA 分组看移动爬虫的请求占比与状态码分布,留意大量 4xx、5xx 或重定向。
- 如果站点对移动端单独配过 robots 规则或 WAF 策略,检查它们是否只在移动 UA 上生效。
一些使用建议
- 不要把给移动端砍内容当成提速手段,入口页的职责就是让蜘蛛拿到链接,链接没了这一步就失去意义。
- 导航、面包屑、分类列表这类结构性链接,尽量服务端渲染输出,不依赖交互才出现。
- 响应式与独立 M 站二选一时,挑团队能长期维护、且 UA 判断逻辑简单可验证的那一种。
- 任何对移动 UA 的特殊处理,缓存、限速、跳转还是屏蔽,都要能在日志里看出效果,否则出问题只能靠猜。
- 适配不是一次性工作,模板改版后把上面的验证步骤重新跑一遍。
蜘蛛不会主动告诉你它看到的是哪个版本。入口页如果能让移动和桌面两种 UA 都拿到同一批链接,很多抓取量上不去的问题会自然减少,但这仍然取决于站点整体质量与抓取策略,不是单点改动就能决定的事。