在服务器日志里看到自称 Googlebot、Baiduspider 的访问,是很常见的事。但 User-Agent 谁都能改,几行脚本就能伪造。如果把伪蜘蛛当成真蜘蛛,后面的抓取频次统计、收录排查、日志分析都会建立在错误的前提上。下面按“先验证身份、再看行为”的顺序,给一套自己能动手做的判断方法。
为什么不能只看 User-Agent
User-Agent 只是请求头里的一个字符串,本身没有任何验证机制。有人用它抓取内容、探测接口、压测,甚至专门伪装成搜索蜘蛛来绕过防护规则。所以日志里出现 “Googlebot” 这行字,只能说明有请求这么写了,不能说明它真的来自搜索引擎。
用反向 DNS 加正向解析做身份验证
这是目前比较靠谱的自查方式,思路是:先拿访问 IP 做反向解析,看域名是不是搜索引擎官方域名;再把解析出来的域名做一次正向解析,看能否解析回原来的 IP。两步都对上,才基本可以认作真蜘蛛。
- 取出日志中的客户端 IP 做反向 DNS 查询。Googlebot 一般解析到 crawl-*.googlebot.com 或 *.google.com;Bingbot 一般解析到 *.search.msn.com。
- 把第一步得到的主机名再做一次正向解析,确认返回的 IP 和日志里的原始 IP 完全一致。只有反向结果、正向对不上,通常就是伪造。
- 对批量日志,可以写脚本按 IP 去重后统一跑一遍,把结果打上“真 / 疑 / 假”的标签再统计。
需要提醒的是,各家搜索引擎提供的验证手段并不完全一样。Google 和 Bing 官方文档里有明确的反向解析说明;百度更多是以官方公布的蜘蛛 IP 段为准,具体请以搜索资源平台的最新文档为准。
从行为特征上看差别
身份验证之外,请求行为本身也有参考价值:
- 真蜘蛛通常会先取 robots.txt,再按规则抓页面;伪蜘蛛往往直接冲着目标 URL 去,不读 robots.txt。
- 真蜘蛛的抓取节奏相对平稳,会遵守 Crawl-delay 或服务端返回的限速信号;伪蜘蛛容易出现短时间高并发、固定间隔、集中在少数几个 URL 上反复打。
- 真蜘蛛会处理页面里的链接、跟进跳转;伪蜘蛛多数只抓指定内容,不解析站内结构。
- 真蜘蛛的 IP 段相对固定且可查;伪蜘蛛的 IP 经常来自云主机、代理池,分布散乱。
验证通过之后要注意什么
确认是真蜘蛛,只解决了“谁在抓”的问题,不代表抓取和收录就没有问题。建议把真蜘蛛的请求单独落到一份日志里,长期观察趋势:抓取总量是涨是跌、抓的是不是重要目录、有没有大量 404 和 5xx、响应时间是不是在变长。这些数据比单看某一天的访问量更有用。如果发现真蜘蛛来得越来越少,通常先查服务器稳定性、robots.txt 规则和站内链接结构,而不是急着增加大量入口页。
几个常见误判
- 看到 IP 归属地不对就判定为假:搜索引擎有分布式抓取节点,归属地和你的服务器位置不一致很正常。
- 看到 UA 里版本号变化就怀疑:官方爬虫 UA 会更新,重点还是核对 IP 和反向解析。
- 把 CDN 回源 IP 当成蜘蛛 IP:经过 CDN 时,日志里记录的可能是节点地址,需要看 X-Forwarded-For 之类的真实来源头,并确认该头是否可被信任。
不要因为怀疑是伪蜘蛛就整体屏蔽某个 IP 段,很容易误伤真爬虫。可以先限速、加验证,再逐步收紧规则。
小结
判断日志里的搜索蜘蛛是真是假,顺序应该是:不靠 UA 下结论,先做反向 DNS 加正向解析,再对照官方 IP 段,最后用行为特征交叉印证。把这一步做扎实,后面的抓取分析、URL 提交和收录排查才有意义。