Q:为什么要专门识别假百度蜘蛛?
恶意爬虫最喜欢伪装成搜索引擎蜘蛛,因为很多网站对搜索引擎 IP 直接放行,不设频率限制、不做验证码。伪装成百度蜘蛛的好处显而易见:绕过反爬策略、高频抓取不被拦截、还能消耗服务器资源。常见危害包括采集原创内容、高频请求拖垮服务器,以及以爬虫为掩护探测网站漏洞。
Q:正规百度蜘蛛的 UA 长什么样?
PC 端 UA 格式如下:
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
移动端则带有 Baiduspider-mobile 或 Mobile 标识。但必须明确一点:UA 是客户端自己声明的,可以随意伪造。任何人一行 curl 命令就能把 UA 改成百度蜘蛛,所以只看 UA 判断真伪是不可靠的,必须结合来源 IP 验证。
Q:反向DNS验证怎么做?
这是百度官方推荐的标准验证方法,分两步走:
- 第一步(反向解析):对请求来源 IP 做反向 DNS 查询,正规百度蜘蛛的 IP 会解析到以 *.baidu.com 或 *.baidu.jp 结尾的域名
- 第二步(正向验证):把解析出的域名再做一次正向解析,确认结果与来源 IP 一致,防止 DNS 伪造
# 反向解析(IP 换成实际来源 IP)
host 116.179.32.1
# 输出示例:... domain name pointer crawl-xxx.baidu.com
# 正向验证,确认解析回同一个 IP
host crawl-xxx.baidu.com
两步都通过才算真蜘蛛。只反向解析不正向验证,可能被伪造 PTR 记录的攻击者骗过。
Q:怎么批量验证日志里的蜘蛛IP?
先从 access.log 中筛出所有声称是百度蜘蛛的来源 IP,再逐个验证:
grep Baiduspider access.log | awk '{print $1}' | sort -u | while read ip; do
host $ip 2>/dev/null | grep -q 'baidu\.com' || echo "可疑假蜘蛛: $ip"
done
脚本逻辑:凡 UA 含 Baiduspider 但反向解析不到 baidu.com 域名的 IP 全部标记为可疑。把可疑 IP 输出后,可再人工抽查确认。
Q:JA3/TLS指纹能识别假蜘蛛吗?
能,而且这是比 UA 更难伪造的一层特征。真蜘蛛由百度服务器上的固定 HTTP 客户端发起,其 TLS 握手参数(加密套件、扩展字段顺序等)构成的 JA3 指纹是相对稳定的;攻击者即使伪造了 UA,其 TLS 协议栈特征也和官方爬虫不同。采集工具、脚本语言(Python requests 等)的 JA3 指纹与真蜘蛛差异明显,可以在 WAF 或 Nginx 模块层面对 JA3 做白名单校验。具体原理可参考JA3 指纹识别实战。
Q:Nginx 怎么只放行真蜘蛛?
思路是”UA 声称是百度蜘蛛,但来源 IP 不在官方网段”的直接 403。用 geo + map 组合实现:
geo $baidu_ip {
default 0;
# 示例网段,实际以百度站长平台公布的最新 IP 段为准
116.179.32.0/24 1;
116.179.33.0/24 1;
}
map "$http_user_agent:$baidu_ip" $fake_spider {
# UA 声称 Baiduspider 但 IP 不在白名单网段 → 判定为假蜘蛛
"~*Baiduspider:0" 1;
default 0;
}
server {
if ($fake_spider) {
return 403;
}
}
两个要点:geo 段落里的网段必须定期更新,以百度站长平台公布的 IP 列表为准,网段配错会把真蜘蛛挡在门外;if 指令只用 return,这是 Nginx 中 if 的安全用法,不会引发配置陷阱。
Q:验证出假蜘蛛后怎么处理?
- 高频抓取型:直接 iptables 封禁 IP 或网段:
iptables -I INPUT -s 203.0.113.0/24 -j DROP - 低频观察型:不封禁,加入 Nginx 限流规则观察行为,有些扫描器只是低频探测
- 有 WAF 的站点:在 WAF 控制台直接添加”UA 含 Baiduspider + 非 official 网段”的组合拦截规则,比服务器层处理更及时
Q:还有什么补充建议?
- 定期跑验证脚本:UA 伪造成本为零,官方 IP 段也会随时间调整,建议每周跑一次批量验证
- 不要一刀切封 UA:直接封 UA 字符串会连真蜘蛛一起拦掉,影响收录,务必结合 IP 验证
- 重要内容加频控:对采集目标页面(如列表页、详情页)单独设置更严格的频率限制
- 善用 WAF 的 Bot 管理功能:商业 WAF 通常内置爬虫识别与人机验证,比手工维护网段更省力