Baiduspider抓取:移动端与桌面端怎样检查差异

📍 WDQWDWQD987AAAAA:216.73.217.85
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /6f6a3fec2acf.html
📄

Baiduspider抓取:移动端与桌面端怎样检查差异

检查 Baiduspider 移动端与桌面端抓取差异,核心是判断同一 URL 在两种 User-Agent 下是否返回了不同内容、不同状态码或不同抓取权限。常见误解是“移动端抓取就是桌面端抓取的缩小版,只要页面能打开就没问题”。实际上,百度对移动端和桌面端可能使用不同的抓取入口与渲染策略,差异往往藏在响应头、HTML 内容、跳转链路和 robots.txt 规则里。

为什么移动端与桌面端抓取结果会不同

差异通常来自四个层面:

注意,robots.txt 的抓取限制不等于可靠的索引移除;即使移动端被 robots 限制,桌面端页面仍可能被索引,反之亦然。站点地图也不保证收录,它只帮助发现 URL,不决定抓取端行为。

用相同 URL 分别模拟两种 UA 请求

最直接的检查方法是用命令行工具分别发送桌面端和移动端 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

对比以下检查项:

  1. HTTP 状态码:一端 200,另一端 301、302 或 403,说明存在 UA 分流或权限拦截。
  2. Location 响应头:移动端 UA 是否被跳转到另一个 URL。若跳转目标不可抓取,移动端抓取会失败。
  3. Content-Type 与 Vary 头:若返回不同 HTML,检查是否声明了 Vary: User-Agent,避免缓存混淆。
  4. HTML 主体差异:用 curl 不带 -I 获取正文,对比 title、canonical、正文首段和主要链接是否一致。

适用条件:该方法适合服务端渲染或静态返回的页面。若页面依赖 JS 渲染,curl 看到的 HTML 可能不是最终 DOM,需要改用支持 JS 渲染的抓取模拟工具,或查看百度搜索资源平台提供的抓取诊断结果。判断结果时,如果两端状态码和 canonical 一致、正文主体一致,差异通常可接受;如果移动端返回空壳 HTML 或跳转到无关页,则属于需要修复的差异。

检查 robots.txt 与移动端适配声明

robots.txt 可能对 Baiduspider 整体生效,也可能被不同 UA 分别匹配。检查步骤:

这里要区分“可能原因”与“已经定位的原因”:移动端抓取异常可能是 robots 限制,也可能是跳转、渲染或服务器超时,不能仅凭一个现象断定唯一原因。

用抓取日志确认实际访问的是哪一端

如果服务器日志可用,筛选 Baiduspider 的 User-Agent,观察同一 URL 被请求时返回的状态码和响应大小。重点看:

若日志中移动端 Baiduspider 从未出现,而桌面端正常,优先排查 CDN、防火墙或 robots 规则,而不是先改页面内容。

下一步行动

先选一个代表性 URL,用上面两条 curl 命令分别请求,记录状态码、Location、canonical 和正文首段。若两端一致,再抽查 robots.txt 和移动适配声明;若不一致,按“状态码差异→跳转差异→内容差异→渲染差异”的顺序逐项排除,每次只改一个变量并重新请求对比。

图1 图2

nginx