搜索抓取

抓取来源核验:只靠 User-Agent 认不出真假蜘蛛

日志里出现大量带蜘蛛 User-Agent 的请求,并不代表这些都来自搜索引擎。本文讲几种交叉核验来源的做法:反向 DNS 正向确认、官方 IP 段比对、请求行为与日志交叉判断,以及误封真蜘蛛会带来什么后果,并给出可以直接落地的检查清单。

搜索抓取

抓取来源核验:只靠 User-Agent 认不出真假蜘蛛

为什么 User-Agent 不足以判断来源

User-Agent 只是请求头里的一段字符串,客户端可以随意填写。任何脚本都能把它改成搜索引擎蜘蛛的名字。所以当访问日志里出现大量带蜘蛛 UA 的请求时,先别急着下结论——这些请求可能来自搜索引擎,也可能来自监控脚本、采集工具、第三方代理,甚至是被放大的恶意请求。把它直接当成真实抓取量来做运营判断,容易得出错误结论。

三种可以交叉使用的核验方式

反向 DNS 与正向确认

主流搜索引擎通常会给出来源验证方法。常见做法是:先对来访 IP 做一次反向 DNS 查询(PTR),得到主机名;再对这个主机名做一次正向解析,确认它解析回的是同一个 IP;最后检查主机名的域名后缀是否属于官方域名。这几步同时满足,才有理由认为来源可信。只看 UA,或者只做第一步而不看后缀,都不够。

官方 IP 段比对

部分搜索引擎会公布抓取所用的 IP 段列表,并定期更新。把访问日志里的 IP 与这份列表比对,是成本较低的做法。需要注意的是列表会变,建议写成定时任务而不是一次性对照;同时要保留比对结果,避免某次误判之后长期把某个网段封掉。

行为特征与日志交叉

真实的搜索蜘蛛通常有几个特征:请求集中在站点的主要路径上,会顺着链接结构逐层推进,对相同 URL 有相对稳定的回访节奏,抓取时段的分布也比较规律。而伪造来源的请求往往集中在少数动态接口、带参数的地址,或者干脆是全站扫描,请求间隔极短,UA 与行为并不匹配。把 UA、IP 与请求路径、频率放在一起看,判断会稳得多。

误封真蜘蛛的代价

反过来,把真蜘蛛当成攻击流量挡掉,代价同样不小。表现通常不是立刻掉量,而是新的 URL 迟迟进不了抓取队列,已收录页面的回访变慢,站内层级较深的页面逐渐被忽略。这种变化是缓慢的,很多人会先去排查内容或内链,反而忽略了服务器侧的拦截规则。所以每次调整 WAF、限速或防火墙策略之后,都值得留一段时间观察蜘蛛请求的到达情况,再决定是否继续收紧。

蜘蛛池场景下的一个常见误区

在做 URL 发现或抓取观察时,有些站点会借助蜘蛛池来增加日志里的抓取痕迹。这里要分清两件事:日志中出现更多请求,不等于搜索引擎对你的站点有了更高的抓取意愿;判断抓取是否健康,仍然要看真实来源的请求量、抓取路径覆盖和回访间隔。如果统计时把模拟 UA 的请求也算进去,数据会被高估,后续的调整方向也会跟着偏。核验来源的第一步,就是先把这部分请求筛出去。

可以落地的检查清单

  • 把 UA、IP、请求路径、响应状态写进同一份日志,方便交叉比对。
  • 对高频来源做反向 DNS 加正向确认,并记录验证结果,而不是只信 UA。
  • 官方 IP 段列表定期更新,比对脚本定时跑。
  • 调整防火墙或限速规则后,观察一段时间内真蜘蛛的请求到达率。
  • 区分真实抓取与模拟请求,统计口径前后保持一致。
核验来源的目的不是把请求挡在外面,而是让判断建立在真实数据上。挡错和放错,都会让后续的抓取优化失去参照。