不少人搭蜘蛛池时只测桌面端:用浏览器打开入口页一切正常,日志里也能看到蜘蛛来访。但如果站点在移动端的表现不一样,移动蜘蛛看到的可能是另一个页面,甚至根本抓不到链接。移动优先索引推行多年,入口页的移动端表现直接决定 URL 能不能被发现。
移动优先索引下,蜘蛛抓的是哪个版本
主流搜索引擎现在基本以移动端 UA 抓取为主,桌面端 UA 抓到的内容只作参考。也就是说,入口页的移动版本才是被索引、被解析链接的主版本。如果移动端被简化成“标题 + 一张图 + 一个按钮”,桌面端那几十条链接等于白放。
要区分两件事:一是移动蜘蛛能不能打开页面,二是打开后能不能看到同样的链接。前者是可达性,后者才是 URL 发现的关键。
三种常见适配方式,各有代价
响应式设计
同一个 URL、同一份 HTML,靠 CSS 适配屏幕。对蜘蛛池来说这是最省事的做法:不用维护两套页面,不会出现 UA 判断失误导致内容不一致,也少了 m 域名的额外解析成本。只要别在窄屏下用 CSS 把链接模块 display:none 掉就行——渲染后不可见的链接,很可能不被当作有效链接处理。
独立 m 域名
比如 m.example.com。这种方式要同时管好 robots、canonical 和跳转关系:m 站的 robots 不能把蜘蛛整体挡住,canonical 要指向明确的对应关系,桌面到移动的跳转别用 JS 判断 UA 后延迟执行。任何一个环节写错,结果都是桌面蜘蛛正常、移动蜘蛛空手而归。
按 UA 返回不同 HTML
服务端按 UA 输出不同内容,理论上可行,但风险最高:UA 库不全、缓存把桌面版吐给移动蜘蛛、CDN 缓存串版本,都会造成“你看到的页面”和“蜘蛛看到的页面”不一致。如果非要用,务必在日志里按 UA 分类核对返回的 HTML 长度和链接数量。
容易被忽略的几个坑
- viewport 缺失:没有 viewport 声明时,移动端可能按 980px 宽度渲染再缩放,布局错位,部分链接被压到屏幕外。
- 移动端加载的 JS 过多:入口页链接由 JS 异步插入,移动环境网络慢、超时早,渲染队列里的链接可能来不及执行。
- 移动端单独屏蔽:为了省流量,在 nginx 或 WAF 里对移动 UA 做了限制,结果把移动蜘蛛一起拦了。
- 内容不一致:移动版只留主关键词和广告位,链接区被折叠进“展开更多”,折叠内容是否纳入解析各家做法不同,别去赌。
- 资源阻塞:大图、外部字体、第三方统计脚本卡住首屏,而蜘蛛的渲染等待时间有限。
自查可以按这几步走
- 用移动 UA 请求入口页,对比返回的 HTML 与桌面版是否存在链接数量差异。
- 在抓取日志里分别统计移动与桌面 UA 的访问量、状态码和抓取深度,看移动端是否明显偏少。
- 检查移动端渲染后的 DOM,确认目标链接确实出现在最终结构里。
- 核对 m 域名(如果有)的 robots、canonical 与跳转链路是否自洽。
入口页的价值是“被看到并跟下去”,移动端看不到链接,等于入口没开。
一点使用建议
如果目标是稳定地做 URL 发现,入口页优先用响应式,一套 HTML 走天下,减少变量,测试和日志都按移动 UA 为准。别为了省带宽或做所谓移动体验,把链接结构拆成两套逻辑——维护成本和排错难度都会翻倍。这些基础做扎实,移动端不会拖累蜘蛛池,反而能让 URL 被发现得更稳定。