先给结论:先核验身份,再按路径和状态限流

百度候选请求出现 429,并不能单独证明网站误杀了真实百度蜘蛛,也不能证明百度已经放弃抓取。正确的处理顺序是:保存原始请求,区分 User-Agent 候选和已核验身份,检查访问路径与行为,再结合反向 DNS 和正向 DNS 做双向核验,最后决定是放行、限流、拦截敏感路径,还是保持待核验。

对搜索蜘蛛的处理不能只看一个字段。User-Agent 可以被伪造,IP 可能动态变化,HTTP 状态只描述本次响应,反向 DNS 也需要正向回查确认。一个可靠的规则应同时保留请求证据、身份证据和安全策略证据,避免把异常探测误认成正常抓取,也避免把真实抓取一律当作攻击。

一句话规则

对自报 Baiduspider 的请求先标为候选;只有 hostname 后缀符合百度规则且正向解析回到原始 IP,才提升为已核验身份;敏感路径无论身份如何都单独阻断,普通页面根据核验状态使用不同限流桶。

先分清四件事:身份、路径、响应和收录

后台最容易混乱的地方,是把“请求看起来像蜘蛛”“请求访问了页面”“服务器返回 200 或 429”和“页面已经被搜索引擎收录”写成一个结论。它们属于不同问题,应该使用不同字段和证据。

层次要回答的问题可以保存的证据不能直接推出
自报身份User-Agent 是否包含 Baiduspider?完整 User-Agent、请求时间、来源 IP。不能证明请求来自百度。
真实身份来源 IP 是否通过百度 DNS 双向核验?PTR、正向 A/AAAA、核验时间和 DNS 结果。不能证明它已经抓取正文。
页面响应本次访问取得了什么 HTTP 状态和内容?路径、方法、状态、响应大小、缓存和日志。200 或 429 都不等于收录。
搜索状态平台是否发现、抓取或建立索引?搜索资源平台、URL 检查和后续复测记录。不能从一条服务器日志直接推出。

第一步:先保存原始请求,不要只保存“百度”标签

在决定放行或封禁前,后台至少要保存以下字段:请求时间、Host、HTTP 方法、原始路径、去掉查询参数后的路径分类、状态码、响应字节数、来源 IP、User-Agent、Referer、请求 ID、限流规则命中结果和身份核验状态。日志中可以对 IP 做受控脱敏展示,但后台内部仍要保留能够完成 DNS 核验的原始值,并设置明确的数据保留期限。

推荐把请求分为“普通页面”“机器入口”“静态资源”“敏感路径”和“管理路径”。/.env、/.git/config、/server-status、/key.pem、/process.env 等路径不属于正常搜索抓取的页面集合。即使请求自报 Baiduspider,也不应因为身份标签而绕过敏感路径保护。

字段组最低字段用途
时间与请求时间、时区、方法、Host、原始路径、请求 ID。还原访问顺序,识别是否为连续探测。
来源原始 IP、User-Agent、Referer、转发头信任状态。区分客户端自报信息和服务器可信来源。
响应HTTP 状态、响应大小、耗时、缓存命中和限流规则。解释 200、404、403、429 等结果。
身份候选平台、DNS 核验状态、PTR、正向解析结果、核验时间。保存身份从候选到确认或否定的变化。
隐私与安全保留期限、脱敏展示、敏感路径分类和处置动作。让日志可调查,但不过度暴露访问数据。

第二步:User-Agent 只能做候选筛选

常见的百度 User-Agent 会包含 Baiduspider 或 Baiduspider-render,但字符串本身没有密码学可信性。任何客户端都可以发送一个看起来像搜索蜘蛛的 User-Agent,所以后台应把“UA 命中”显示为候选状态,而不是显示为“真实百度蜘蛛”。

UA 候选仍然有用:它可以帮助系统决定哪些请求进入身份核验队列,哪些请求需要保留更细的日志。但它不能让请求自动获得限流豁免,也不能让请求访问管理接口、敏感文件或内部调试路径。

展示建议

后台用“自报百度候选”“DNS 待核验”“百度身份已确认”“核验失败”“人工测试”这些标签,避免使用一个没有解释范围的“百度蜘蛛”绿色徽章。

第三步:做反向 DNS,再做正向 DNS

百度公开的蜘蛛识别思路是先对来源 IP 做反向 DNS 查询,再对得到的 hostname 做正向 DNS 查询,确认解析结果仍然回到原始 IP。反向查询得到一个看起来像百度的 hostname,只能作为中间结果;如果正向查询不匹配原始地址,就不能确认来源。

  1. 固定原始来源 IP。从可信的连接信息中读取来源地址。不要把客户端提交的 X-Forwarded-For 当成真实 IP,除非该请求确实经过受信任的反向代理,并且代理链配置已冻结。
  2. 反向查询 PTR。对 IPv4 或 IPv6 地址执行反向 DNS,记录完整 hostname、DNS 返回时间、超时或失败状态。
  3. 检查 hostname 后缀。按照平台当前公开规则检查是否属于百度允许的域名范围,例如 baidu.com 或 baidu.jp 的真实子域。不能只检查字符串中是否出现“baidu”。
  4. 正向回查。对 PTR 返回的 hostname 查询 A/AAAA 记录,确认原始 IP 出现在结果中。缺少这一步时,状态只能保持待核验。
  5. 记录核验快照。保存核验时间、DNS 服务器或解析方式、PTR、正向结果、失败原因和缓存过期时间。身份结果会随 DNS 和地址变化,不能永久套用。
# Linux / macOS 示例:只用于核验候选 IP
host 111.206.198.69
host baiduspider-111-206-198-69.crawl.baidu.com

# macOS 也可以使用
dig -x 111.206.198.69
dig A baiduspider-111-206-198-69.crawl.baidu.com

命令输出要作为证据保存,而不是直接复制成结论。DNS 查询失败可能是暂时的网络或解析问题,应该记录为“未解析”或“待核验”,而不是自动归为冒充;反过来,只有 PTR 命中而正向回查不匹配时,才有充分理由将其标记为身份核验失败。

第四步:正确解释 429,不要把它当成永久封禁

HTTP 429 的含义是服务器在一段时间内收到过多请求,因而要求客户端降低请求频率。它描述的是当前请求的访问控制结果,不直接说明来源是真蜘蛛还是冒充者,也不直接说明页面已经被搜索引擎收录或完全无法抓取。

状态对本次请求的说明下一步判断
200服务器返回了成功响应。检查正文、canonical 和路径是否为正常页面;不能据此确认收录。
301/308请求被永久重定向。检查是否归一到正式 HTTPS URL,避免把重定向入口当正文版本。
403服务器拒绝本次访问。核对访问规则、身份状态和是否误伤正常页面。
404请求路径没有对应资源。若是敏感探测路径,记录为异常路径;若是正式页面,检查部署和链接。
429请求频率超过当前规则或容量。检查时间窗口、同一来源行为、Retry-After 和限流桶。
5xx服务端处理失败或暂时不可用。优先排查服务、代理、数据库和部署,不要先归因于蜘蛛。

如果 429 响应中有 Retry-After,应用应遵守它或采用明确的退避时间。没有该字段时,可以使用站点自己的短时冷却规则,但不要让同一来源在很短时间内反复触发重试。限流系统还应监控正常页面的成功率、响应延迟和搜索平台的核验结果,避免只看“拦住了多少请求”。

第五步:路径和行为比 UA 更能帮助识别异常

真实搜索抓取通常围绕公开页面、sitemap、静态资源和机器入口展开;连续访问环境文件、密钥文件、版本控制目录、服务器状态页和接口描述文件,更接近通用漏洞探测或伪装请求。行为模式不是身份认证,但它是重要的安全信号。

行为样本建议分类处置
已核验身份访问公开 HTML 页面已核验普通抓取使用搜索蜘蛛限流桶,保留合理访问频率和失败日志。
UA 自报百度但 DNS 尚未完成待核验候选使用保守限流桶,进入 DNS 核验队列。
连续访问 .env、.git、key.pem 等敏感路径敏感路径探测立即阻断路径并记录安全事件,不因 UA 绕过规则。
大量随机路径、短时间高并发异常扫描候选按 IP、网段、行为和速率组合限流,必要时人工复核。
后台、登录和内部 API 请求受保护路径保持独立认证和访问规则,不纳入公开抓取放行。

不要根据单个异常路径就给整个百度网段永久封禁,也不要根据一次 200 就给单个 IP 永久白名单。将“路径风险”“身份可信度”和“速率风险”分别评分或分别存储,规则才有机会在证据更新后自动修正。

第六步:设计三层限流桶,避免误杀和绕过

一个适合内容站的最小策略,可以把普通访客、待核验蜘蛛和已核验蜘蛛分到不同限流桶。每个桶的容量和窗口应通过真实日志调整,不能照搬一个固定数字。身份核验只影响公开页面的访问策略,不能改变敏感路径、管理路径和登录保护。

限流桶进入条件默认策略升级条件
普通来源没有可信平台候选或核验失败。常规访客限流,敏感路径单独阻断。出现连续扫描、异常并发或大量失败。
待核验候选UA 命中 Baiduspider,但 DNS 尚未完成。允许有限访问公开页面,限制频率并排队核验。核验通过或行为触发安全规则。
已核验百度PTR 后缀符合规则,正向解析回到原始 IP。按搜索抓取策略限流,不绕过敏感和管理路径保护。出现异常路径或明显扫描行为。

系统还要防止转发头伪造。限流键应来自服务器确认的对端地址或可信代理解析结果,不能允许客户端通过随意改变用户名、转发头或大小写来创建新的限流桶。对于 IPv4 和 IPv6,要统一规范化地址并支持网段规则,避免同一来源通过格式变化逃避限制。

ZenLeak 的实际日志应该如何解读

ZenLeak 在 2026 年 9 月 20 日记录过一组自报百度的请求:同一来源连续访问 /.git/config、/.env、/.env.old、/temp/.env、/server-status、/.vscode/launch.json 和 /process.env 等路径。该组请求中多数返回 429,另有敏感文件路径返回 404。

这组记录可以支持三个有限判断:服务器的访问控制对这组请求生效;请求路径与正常公开页面抓取不一致;这些日志本身不足以证明来源是真实百度蜘蛛。要确认百度身份,还要回到原始 IP、PTR、正向 DNS 和时间窗口,不能因为 User-Agent 显示百度就把它改成“百度已抓取”。

记录方式

把“自报百度”“访问敏感路径”“触发 429”“DNS 待核验”作为四个并列标签。它们可以同时成立,但不能合并成“百度蜘蛛被拦截”这一条未经核验的结论。

后台至少要提供哪些功能

管理员后台不需要先做复杂的蜘蛛评分,但必须能让一次请求从候选、核验、响应到处置形成完整记录。建议增加以下字段和操作:

  1. 筛选:按平台候选、身份状态、HTTP 状态、敏感路径、时间窗口、来源 IP 和核验结果筛选。
  2. 详情:查看完整 UA、原始路径、状态码、响应大小、命中规则、PTR、正向解析和核验时间。
  3. 复核:对待核验 IP 手动发起 DNS 复核,保存新结果并保留旧结果,不能覆盖历史。
  4. 策略:分别配置普通、待核验和已核验来源的公开页面限流;敏感路径和后台路径独立处理。
  5. 释放:允许管理员对误判的来源解除临时限制,但要记录操作者、原因、有效期和复核时间。
  6. 报表:分别显示候选请求数、已核验请求数、429 数、敏感探测数和正式页面 200 数,禁止用一个“蜘蛛访问量”替代这些指标。

后台展示可以隐藏完整 IP,只在具备权限时显示;下载日志时要执行脱敏。日志保留策略应与隐私声明一致,定期清除不再需要的原始 IP 和 User-Agent,保留聚合计数和不含个人识别信息的结论。

哪些判断可以自动化,哪些必须保留未知

适合自动化需要人工或平台证据
提取 UA 候选、分类路径、统计 429、合并限流窗口。确认请求是否属于真实百度抓取,以及是否与某次平台任务相关。
执行 PTR 和正向 DNS、缓存结果并设置过期时间。处理 DNS 超时、多个 hostname、解析变化和证据冲突。
按身份状态选择公开页面限流桶,敏感路径先行阻断。决定是否扩大放行范围、调整安全规则或解除人工限制。
生成待复核列表、到期提醒和按天汇总。把日志结论与搜索平台抓取、收录或排名状态关联。

如果 DNS 服务暂时不可达、PTR 为空或结果过期,最稳妥的状态是“未知”或“待核验”。未知不是失败,失败也不是收录结果。系统应该让这些状态自然存在,而不是为了生成一个看起来完整的仪表盘而自动填成“冒充”或“未收录”。

上线前的蜘蛛限流检查清单

  1. 服务器日志保存了原始时间、Host、方法、路径、IP、UA、状态和响应大小。
  2. User-Agent 命中只产生候选状态,没有直接获得白名单或限流豁免。
  3. 真实来源 IP 来自可信连接信息,转发头没有被无条件信任。
  4. 反向 DNS 结果保存了 hostname、时间和失败原因。
  5. 反向 DNS 命中后执行了正向 DNS 回查,并与原始 IP 比对。
  6. DNS 未完成时保持待核验,不自动标记为冒充。
  7. 敏感路径始终独立阻断,不因自报或已核验蜘蛛身份而放行。
  8. 普通来源、待核验候选和已核验蜘蛛使用不同的公开页面限流桶。
  9. 429 记录了命中规则、时间窗口和 Retry-After,而不是只显示“被拦截”。
  10. 后台将身份、响应、抓取和收录分别展示,并保留人工复核历史。

常见问题

看到 Baiduspider User-Agent,就应该放行吗?

不应该。UA 只能作为候选信号。先做反向 DNS 和正向 DNS 核验,同时检查访问路径和频率;敏感路径无论 UA 如何都应独立保护。

百度蜘蛛返回 429,是不是已经被网站永久封禁?

不是。429 表示本次请求在当前时间窗口超过了限流条件。应检查限流桶、请求频率和 Retry-After,并确认后续公开页面请求是否仍可正常取得响应。

PTR 解析出 baidu.com,就能确认是真百度吗?

还不能。必须对 hostname 做正向 DNS 查询,确认结果包含原始来源 IP,并保存核验时间和结果。

真实百度蜘蛛访问 .env 时要不要放行?

不要。敏感文件和调试路径不是正常页面抓取目标,应独立阻断并记录安全事件。身份核验不会改变敏感路径保护。

HTTP 200 能证明页面被百度收录吗?

不能。200 只说明这次 HTTP 请求取得了成功响应。抓取、索引和收录需要通过搜索平台或其他对应证据分别确认。

结果边界与延伸阅读

蜘蛛身份核验解决的是“这次请求更像谁”,限流解决的是“服务器如何处理这次请求”,搜索平台复测解决的是“页面后来是否被发现、抓取或索引”。三者可以关联,但不能互相替代。对任何暂时无法核验的请求,保留未知状态比制造一个确定但错误的结论更有价值。

可以继续阅读百度蜘蛛身份核验教程了解证据字段,阅读百度主动推送队列教程区分提交与抓取,阅读搜索收录复测教程安排 T+1、T+3、T+7 观察窗口,并参考AI 爬虫治理区分搜索索引、答案代理和模型训练请求。