搜索引擎的抓取并不是只靠一只蜘蛛。同一天里,你可能在日志中看到两条 UA:一条带桌面标识,一条带移动标识。它们访问的是同一个站点,但走到的页面、拿到的 HTML、以及留下的抓取频次都可能不一样。搞清楚这两条线的分工,有助于判断某类 URL 一直没被抓,是发现环节没铺到,还是抓取环节被分流了。
两套爬虫的分工并不完全重合
桌面爬虫服务于桌面索引,移动爬虫在移动优先的前提下承担主要抓取任务。对多数站点来说,移动爬虫的抓取量占比更高。若站点是响应式结构,两套 UA 拿到的 HTML 基本一致,差异只出现在视口和部分资源加载上;如果是独立 m 站或按 UA 动态下发内容,两套 UA 可能拿到结构完全不同的 DOM,链接出口也就跟着变了。
差异最常见的几个来源
- 响应式设计:同一份 HTML,两端差异最小,通常不需要额外处理。
- 独立移动域:桌面爬虫访问主域,移动爬虫访问 m 域,两边导航、分页、Sitemap 容易不同步。
- 动态渲染或客户端跳转:服务端按 UA 返回不同入口,可能让其中一条线走到半路就断了。
- 屏蔽规则:robots.txt、CDN 或 WAF 里存在只放行一类 UA 的规则,另一类直接被挡在门外。
日志里怎么分辨
最直接的做法是按 UA 分组,统计同一目录、同一批 URL 的抓取次数。如果某个栏目在移动 UA 下长期为零,先看它是不是只出现在桌面版页面的内链里,而移动版导航没有给出出口。反过来同样成立:只在移动版出现、桌面版隐藏的链接,桌面爬虫也走不到。
几个容易被忽略的细节
- 移动爬虫并不因为设备小就对体积更宽容,首屏资源阻塞、关键内容靠后加载,同样会影响它能走多远。
- m 站如果做了跳转回主域的逻辑,等于给移动爬虫多绕一层,抓取额度被消耗在跳转链上而不是内容页。
- 两套 UA 的抓取节奏受各自索引需求影响,很难人工单独调节;能控制的是站点响应速度、错误率和可抓取路径的一致性。
建议的自查顺序
- 在日志中按 UA 拆分,列出两条线各自覆盖到的目录。
- 把桌面版与移动版的内链出口逐项对比,尤其是导航、面包屑和分页。
- 检查 robots.txt、WAF、CDN 里是否有与 UA 相关的放行或拦截规则。
- 确认移动版是否有独立 Sitemap,且其中的 URL 与移动内链一致。
- 抽查移动版首屏关键内容是否存在于初始 HTML 中,而不是等脚本执行后才出现。
为什么建议两边保持一致
站点只维护一套可抓取的 URL 与出口结构,能减少两类麻烦:移动爬虫找不到只在桌面版出现的链接;同一内容被两套 UA 以不同 URL 分别抓取,形成重复。把导航、分页、面包屑和 Sitemap 在两端对齐,是最省事也最稳的做法。
两套爬虫之间的差异,本质上不是蜘蛛认不认你的移动站,而是你的移动站有没有给出能走通的路径。让两条线看到同一套 URL、同一套出口,比针对某一个 UA 做特殊处理更可靠。