Baiduspider抓取 - 重复或冲突信号的处理起点

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

Baiduspider抓取 - 重复或冲突信号的处理起点

处理 Baiduspider 抓取中重复或冲突信号的核心做法是:先确定冲突发生在哪一层(URL 可访问性、页面内容声明、还是抓取入口),再让同一层内的信号只保留一个明确结论。假设一个例子:某站点同一篇内容有 /article?id=123 和 /article/123 两个可访问地址,页面里 canonical 指向后者,但站点地图只提交了前者,内链又混用两者。Baiduspider 会看到多个入口和多个“哪个是正本”的说法,这就是典型的重复与冲突并存。第一步不是改代码,而是把同一内容的所有可访问 URL 列出来,标注每个 URL 被谁引用、返回什么状态码、页面内声明了什么。

先分清三类冲突,不要混在一起改

第一类是 URL 层重复:同一内容能通过多个地址打开,包括参数、大小写、带不带斜杠、http 与 https 并存。第二类是声明层冲突:canonical、robots meta、页面标题各自指向不同版本,或者 canonical 指向一个 404 或跳转地址。第三类是入口层冲突:站点地图、内链、外链分别指向不同版本,甚至有的入口被 robots.txt 屏蔽,有的没有。这三类的处理顺序不同,混改容易按下葫芦浮起瓢。

假设例子的逐步处理

  1. 抓取所有候选 URL,记录状态码、最终跳转地址、canonical、robots meta。用 curl -I 看响应头,用页面源码看声明。
  2. 确定唯一正本 URL,通常是内容最完整、结构最稳定、已有外链最多的那个。
  3. 让其他重复 URL 通过 301 跳到正本,而不是只靠 canonical 声明。canonical 是提示,301 是更强的合并信号。
  4. 把站点地图、内链、canonical 全部改成指向正本,删掉指向重复版本的入口。
  5. 检查 robots.txt 是否误屏蔽了正本或站点地图,屏蔽只阻止抓取,不等于从索引移除。

常见错误有三个:只加 canonical 却保留 200 状态的多地址;canonical 指向跳转链中间地址;站点地图提交了重复 URL 而正本没提交。判断是否处理到位,看同一内容是否只剩一个返回 200 的地址,其余要么 301,要么 404/410。

冲突信号的检查项

适用条件与判断结果

上述处理适用于内容相同、只是地址不同的重复。如果两个地址内容其实不同,就不该合并,而应各自明确主题、互相区分。如果冲突来自分页、筛选参数或打印版,优先用 canonical 指向主列表页,并确认参数不会生成无限可抓取地址。判断结果的标准不是“提交后立刻变化”,而是正本地址能被稳定抓取、重复地址逐步减少出现在抓取记录中。站点地图不保证收录,HTTPS 也不等于没有安全问题,这两点不要当作冲突已解决的依据。

下一步:从服务器日志或抓取统计中筛出 Baiduspider 实际访问过的重复 URL,按上面三类归档,先处理返回 200 的重复地址,再统一入口声明。

图1 图2

nginx