核心原则
“友好”的本质是:准确识别并允许真实的Baiduspider IP流量通过,同时继续阻挡恶意爬虫和攻击。

具体设置步骤与建议
识别真实的Baiduspider
这是最关键的一步,百度官方提供了Baiduspider的IP段列表,并且这些IP会进行反向DNS解析验证。
- 官方IP地址列表:需要定期从百度站长平台获取和更新,您可以在这里找到最新的IP段: 百度站长平台 - 关于Baiduspider
- 验证方法:当有IP声称是Baiduspider时,您应该对其做反向DNS解析,确认其
hostname包含*.baidu.com或*.baidu.jp。host 123.125.66.120 # 正确的解析结果应类似于:120.66.125.123.in-addr.arpa domain name pointer baidu.com。
配置防火墙规则(通用思路)
A. 服务器/云平台安全组/防火墙(网络层)
- 允许列表(Allow List):将百度官方公布的Baiduspider IP段添加到防火墙的“白名单”或“允许访问”规则中,通常针对80(HTTP)和443(HTTPS)端口。
- 操作:在您的云服务商(如阿里云、腾讯云的安全组)或服务器本地的iptables/firewalld中设置。
B. Web服务器层(Nginx/Apache)
这是更常见和灵活的方式,可以通过判断User-Agent和验证IP来实现。
-
示例:Nginx 配置片段 可以在相应的
server块或全局配置中,对已验证的Baiduspider IP取消限制(如速率限制、连接数限制),或直接允许访问。# 第一步:定义百度蜘蛛的IP段(需要定期更新) geo $real_bot_ip { default 0; # 此处填入从百度官方获取的CIDR格式IP段, 123.125.66.0/24 1; 220.181.38.0/24 1; 111.206.0.0/16 1; # ... 其他IP段 } # 第二步:在需要的地方应用,例如绕过速率限制 location / { limit_req zone=api burst=5 nodelay; # 如果是真实的百度蜘蛛IP,则不进行速率限制 if ($real_bot_ip = 1) { limit_req zone=api off; } # ... 其他配置 } # 或者,在屏蔽某些User-Agent的规则中排除百度 if ($http_user_agent ~* (curl|wget|scrapy|python)) { # 但如果是百度蜘蛛,则放行 if ($real_bot_ip = 1) { break; } return 403; } -
Apache 配置思路类似:可以使用
mod_remoteip或mod_setenvif配合IP列表和User-Agent进行判断。
C. 云WAF/CDN防火墙(应用层)
- 白名单设置:在阿里云WAF、腾讯云WAF、Cloudflare等产品的“白名单”或“IP放行”规则中,添加Baiduspider的IP段。
- 安全策略例外:在CC攻击防护、速率限制、敏感目录防护等规则中,为Baiduspider设置例外。
- 特别注意:很多WAF有专门的“搜索引擎爬虫保护”或“爬虫友好模式”开关,开启后会自动识别并放行主流搜索引擎爬虫。请务必在您的WAF控制台检查并开启此功能。
重要补充事项
- 不要仅依赖User-Agent:恶意爬虫可以轻易伪造
Baiduspider的User-Agent。必须结合IP白名单和反向DNS验证,才能可靠识别。 - 定期更新IP列表:百度的爬虫IP段可能会变更,建议每季度至少检查一次百度站长平台的公告。
- 检查Robots.txt:确保您的
robots.txt文件没有意外禁止Baiduspider访问重要目录,这是一个低级但常见的错误。 - 使用百度站长平台工具:
- 抓取诊断:直接测试百度爬虫能否正常访问您的页面。
- 抓取异常:查看是否有大量抓取失败记录,并分析原因是否为“连接超时”、“被拒绝”等防火墙相关错误。
- Robots工具:检测Robots.txt是否配置正确。
- 服务器负载考量:虽然放行Baiduspider,但仍需监控其抓取频率,如果抓取过于频繁影响正常服务,可以在百度站长平台的“抓取频次”工具中申请调整。
- 双重验证:
IP白名单+反向DNS解析= 可靠的真实Baiduspider。 - 分层设置:在网络安全组和Web服务器应用层都进行配置,确保万无一失。
- 善用工具:充分利用百度站长平台的各种工具进行验证和监控。
- 保持更新:定期维护和更新IP白名单及服务器规则。
通过以上设置,您就可以在保障网站安全的同时,对百度搜索引擎爬虫保持“友好”,确保网站内容能被顺利抓取和收录。