常见问题

入口页电脑端和手机端显示的链接不一样,搜索蜘蛛会按哪个版本发现目标 URL?

现在主流搜索平台抓取时大多以移动端 UA 为主,入口页给手机和电脑返回不同 HTML 时,蜘蛛看到的多半是移动版。本文说明响应式、UA 跳转、JS 动态渲染三种常见做法的差别,以及怎样用移动 UA 请求和服务器日志确认蜘蛛实际读到了哪些链接。

常见问题

入口页电脑端和手机端显示的链接不一样,搜索蜘蛛会按哪个版本发现目标 URL?

先弄清楚搜索蜘蛛默认拿到的是哪一份 HTML

早期的搜索抓取主要用桌面端 UA,现在的主流搜索平台基本都转向了移动优先。以 Google 为例,多数站点已经默认使用智能手机 UA 抓取,并用抓取到的这份 HTML 去做索引;百度也长期推行移动适配与移动优先的抓取策略。这就带来一个很实际的问题:如果入口页对手机 UA 和电脑 UA 返回的内容不一样,搜索蜘蛛拿到的大概率是移动版那一份,而不是你坐在电脑前打开时看到的样子。

所以入口页里的目标链接能不能被发现,取决于移动版 HTML 源码里到底有没有这些链接,而不是 PC 版页面上有没有。

三种常见部署方式,结果差别不小

1. 响应式,两端共用同一套 HTML

链接本身写在 HTML 里,只是通过 CSS 在小屏下换行、缩小或折叠。搜索蜘蛛读到的 HTML 里 href 依然存在,通常可以正常发现。这是最省心的做法。需要注意的是,即使用 display:none 或折叠面板把某段链接藏起来,蜘蛛在解析 HTML 阶段一般仍能读到链接地址,但这类被隐藏的链接在页面里的权重和可信度通常会被打折扣,不宜作为唯一的链接出口。

2. UA 判断跳转或独立的移动站

服务器根据 UA 判断,把手机访客(移动蜘蛛 UA 常常也在其中)跳到 m. 子域,或者直接返回一套精简版 HTML。如果这套移动版为了加载速度砍掉了列表、导航或页脚链接,那么搜索蜘蛛在移动版里就看不到这些 URL,PC 版里放着再多也没有意义。这是入口页链接「凭空消失」最常见的成因。

3. JS 按屏幕宽度动态插入链接

入口页靠脚本判断设备宽度后再渲染链接,属于依赖渲染才能拿到链接的路径。搜索引擎的渲染队列本身有延迟,也不保证每次都能完整执行脚本,链接被稳定发现的概率会打折扣。

怎么确认蜘蛛到底读到了什么

  • 用移动端蜘蛛 UA 直接请求入口页(curl、Postman 或浏览器的 UA 模拟都行),看返回的原始 HTML 源码里有没有目标链接,不要看浏览器渲染之后的 DOM。
  • 再用桌面 UA 请求一次,把两份 HTML 做对比,差异的那部分就是风险点。
  • 在服务器日志里按 UA 分类,确认移动蜘蛛是否访问过入口页、返回的状态码是不是 200。
  • 如果条件允许,观察移动蜘蛛访问入口页之后,是否对目标 URL 产生了新的请求记录。

几个可以落地的调整方向

  1. 关键目标链接尽量同时存在于两个版本的初始 HTML 里,不要只留给某个断点或某个 UA 渲染。
  2. 移动版必须精简时,优先砍样式、图片和脚本,尽量保留链接结构本身。
  3. 不要让 UA 判断把搜索蜘蛛跳到一份完全没有链接的页面上。
  4. 入口页尽量少依赖 JS 生成链接,能用静态 HTML 输出就直接静态输出。
  5. 改动入口页结构后,重新用移动 UA 抓一遍源码复核,而不是只在浏览器里肉眼确认。
不同搜索引擎、不同时间点的抓取策略并不完全一致,上面说的是较常见的情况。让链接在移动版和 PC 版里都可见,只是减少「蜘蛛读不到链接」这类技术性损耗,并不代表目标 URL 一定会被抓取或被收录。