抓取日志里出现大量带 Googlebot、Baiduspider 字样的请求,并不代表搜索蜘蛛真的来过。UA 字符串可以被任意伪造,如果把伪蜘蛛的请求直接算进抓取统计,后续对抓取频次、入口有效性、服务器压力的判断都会跟着偏移。
为什么先做识别,再谈抓取分析
跳过识别这一步,常见的误判有三种:
- 把扫描器、第三方采集工具、监控探针当成搜索蜘蛛,误以为抓取量在上升;
- 真实蜘蛛的抓取被伪蜘蛛噪声淹没,反而误判为抓取下降;
- 按伪造 UA 的请求节奏去调服务器限速或缓存策略,结果是真实蜘蛛被限。
这三类问题的共同点在于:数据本身不可信,后面的分析做得再细也没有意义。
三重校验的先后顺序
第一步:User-Agent 只做初筛
真实搜索引擎的 UA 通常包含固定标识,如 Googlebot、Bingbot、Baiduspider、YandexBot 等。但字符串可以照抄,所以 UA 命中只能作为候选,不能当作结论。这一步的作用是把日志范围缩小到需要进一步核对的请求。
第二步:反向 DNS 正反查
对候选 IP 做反向解析,看解析出的域名是否落在官方域名后缀下,例如 Googlebot 常见 crawl-xxx.googlebot.com 或 xxx.google.com,Bing 常见 xxx.search.msn.com 一类后缀。
反向解析通过后,还要再做一次正向解析,确认该域名解析回来的 IP 与原始来源 IP 完全一致。只有双向都对得上,才基本可以认定。如果反向解析失败,或者正向结果与来源 IP 不符,就应当按普通流量处理。
第三步:IP 段核对
搜索引擎会公布自己的抓取 IP 段。Googlebot 以 JSON 文件形式提供,Bing、百度也有各自的说明页。把已经通过反向 DNS 的 IP 再与官方段比对一次,可以覆盖 DNS 配置异常或本地解析缓存带来的偏差。IP 段会更新,建议定期同步,而不是一次性抄下来长期使用。
一个可以固定下来的核对流程
- 从日志中筛出 UA 含蜘蛛标识的请求,输出 IP、UA、时间、状态码等字段;
- 对去重后的 IP 做反向解析,记录 PTR 结果;
- 对 PTR 结果做正向解析,与来源 IP 比对;
- 与官方 IP 段列表比对;
- 三项都通过的标记为真实蜘蛛,其余归入待观察或普通流量。
这套流程可以脚本化,每天增量跑一次即可,成本不高。
伪蜘蛛流量怎么处理
- 不要在 robots.txt 里试图屏蔽,伪蜘蛛不会遵守;
- 用限速规则或 WAF 按请求频率、路径特征处理,避免直接封整个 IP 段;
- 观察它是否集中请求搜索接口、登录页、购物车等与抓取无关的路径,这类请求基本不是搜索蜘蛛;
- 保留一段观察期,避免把 CDN 回源、运营商 NAT 出口等正常流量一起误判。
识别蜘蛛的目的不是封禁,而是让日志统计和服务器策略建立在可信数据上。误封真实蜘蛛的代价,通常比放过一批伪蜘蛛更高。
清洗之后的日志能回答什么
当日志里只剩下可验证的蜘蛛请求,此前很多说不清的波动会变得清晰。例如某个时段抓取量下降,是蜘蛛真的减少了回访,还是伪蜘蛛噪声变少;某个目录请求频次高,是入口确实有效,还是被异常参数反复请求。服务器侧的限速、缓存与回源策略,也才可以只针对可信流量来评估效果。
小结
UA 初筛、反向 DNS 正反查、官方 IP 段核对,三步都不复杂,但能明显提高抓取分析的准确度。把这一步固定成日志处理的前置环节,后面关于抓取路径、入口有效性和服务器承载的判断才站得住脚。