做蜘蛛池入口页的时候,很多人只在自己电脑的浏览器里看一眼,觉得页面能打开、文字都在,就当作没问题了。但搜索引擎现在普遍以移动端为主来评估页面,蜘蛛抓取时带的 User-Agent 也常常是手机浏览器。也就是说,你在宽屏下看到的那个排版整齐的入口页,蜘蛛未必能看到同一版。
为什么蜘蛛会带着手机 UA 来
抓取端的选择通常有三种实现方式:响应式布局、独立移动站、以及按 UA 动态返回不同 HTML。前两种比较常见,第三种在过去几年被大量使用,也是问题最集中的一种。它意味着同一个 URL,用桌面 UA 和手机 UA 请求,服务器可能返回两套完全不同的内容。
移动端常见的三种翻车方式
- 内容被折叠。移动端为了首屏好看,把正文和一部分链接塞进「展开全文」,必须点击或滚动到底才加载。如果展开逻辑依赖 JS,蜘蛛很可能只拿到标题和一句摘要。
- 内容被裁剪。模板在移动端直接删掉侧栏、相关阅读、分页导航。入口页本来靠这些位置把链接铺出去,裁掉之后蜘蛛能顺着走的路径就少了。
- 移动版被屏蔽。m 站单独配了一份 robots.txt,或者移动版模板里带着 noindex。桌面版能抓,移动版反而拒之门外。
用自己的手机 UA 自查一遍
- 用命令行带上手机 UA 请求一次入口页,直接看返回的 HTML 源码,而不是看渲染后的画面。
- 把移动版和桌面版的正文文字量做个对比。差的不是排版,是内容本身少了多少。
- 记录跳转链:入口页是否跳到 m 站,m 站是否又跳回来。301、302 跳个两三次还不落地,抓取端容易中途放弃。
- 看移动版上的 canonical 指向哪里。桌面版和移动版各自指向自己、或者一方指向另一方,都是常见写法,但至少要一致,别两边互相打架。
- 检查首屏有没有遮挡式弹窗、浮层或下载引导。这类元素会盖住正文和链接。
两套站还是一套模板
如果维护成本允许,优先用响应式。一套 HTML、一套链接结构,蜘蛛无论带什么 UA 拿到的都是同一份内容,你也不用去对齐两个版本的 canonical。确实要分站的话,把移动版当成正式版本对待:正文完整、链接完整、允许抓取,然后和桌面版做一次交叉核对。
入口页的核心价值是让蜘蛛发现并走到下游链接,正文短一点不可怕,可怕的是移动端把链接一并藏了起来。
几条省事的做法
- 正文和链接在两种 UA 下都完整输出,折叠只影响视觉呈现,不影响 HTML 里有没有。
- 折叠、选项卡优先用 CSS 或原生 HTML 实现,少依赖点击后才发起请求的脚本。
- 移动端的弹窗做成可关闭、可延后出现的,不要一进页面就糊在正文上。
- 改动模板后,隔一段时间再用手机 UA 抓一次,确认返回的仍是完整版本。
把移动端当成主版本来看待,而不是桌面版的附属品,很多「蜘蛛来了却什么都没抓到」的疑问,会自然少一大半。