检查 Baiduspider 移动端与桌面端抓取差异,核心是判断同一 URL 在两种 User-Agent 下是否返回了不同内容、不同状态码或不同抓取权限。常见误解是“移动端抓取就是桌面端抓取的缩小版,只要页面能打开就没问题”。实际上,百度对移动端和桌面端可能使用不同的抓取入口与渲染策略,差异往往藏在响应头、HTML 内容、跳转链路和 robots.txt 规则里。
差异通常来自四个层面:
注意,robots.txt 的抓取限制不等于可靠的索引移除;即使移动端被 robots 限制,桌面端页面仍可能被索引,反之亦然。站点地图也不保证收录,它只帮助发现 URL,不决定抓取端行为。
最直接的检查方法是用命令行工具分别发送桌面端和移动端 User-Agent,对比响应。下面以假设域名为例,实际替换成你的 URL。
curl -I -A "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" https://example.com/page
curl -I -A "Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" https://example.com/page
对比以下检查项:
Vary: User-Agent,避免缓存混淆。curl 不带 -I 获取正文,对比 title、canonical、正文首段和主要链接是否一致。适用条件:该方法适合服务端渲染或静态返回的页面。若页面依赖 JS 渲染,curl 看到的 HTML 可能不是最终 DOM,需要改用支持 JS 渲染的抓取模拟工具,或查看百度搜索资源平台提供的抓取诊断结果。判断结果时,如果两端状态码和 canonical 一致、正文主体一致,差异通常可接受;如果移动端返回空壳 HTML 或跳转到无关页,则属于需要修复的差异。
robots.txt 可能对 Baiduspider 整体生效,也可能被不同 UA 分别匹配。检查步骤:
https://example.com/robots.txt,确认是否存在针对 Baiduspider 的 Disallow 规则。m.example.com,该子域的 robots.txt 需要单独检查。rel="alternate" 与 rel="canonical" 是否互相指向正确。若移动端 canonical 指向桌面端,而桌面端又指向移动端,会形成冲突。这里要区分“可能原因”与“已经定位的原因”:移动端抓取异常可能是 robots 限制,也可能是跳转、渲染或服务器超时,不能仅凭一个现象断定唯一原因。
如果服务器日志可用,筛选 Baiduspider 的 User-Agent,观察同一 URL 被请求时返回的状态码和响应大小。重点看:
若日志中移动端 Baiduspider 从未出现,而桌面端正常,优先排查 CDN、防火墙或 robots 规则,而不是先改页面内容。
先选一个代表性 URL,用上面两条 curl 命令分别请求,记录状态码、Location、canonical 和正文首段。若两端一致,再抽查 robots.txt 和移动适配声明;若不一致,按“状态码差异→跳转差异→内容差异→渲染差异”的顺序逐项排除,每次只改一个变量并重新请求对比。