做蜘蛛池的人经常看日志,但很多人看日志的方式只有一个动作:在访问记录里搜“spider”“bot”这类关键词,然后把带这些字样的访问全部算成搜索蜘蛛。结果是入口页的抓取数字看起来很漂亮,实际却没有多少条来自真实搜索引擎的抓取。
为什么 UA 不能直接信
User-Agent 是请求方自己填的字段,任何人都能把它改成 Googlebot 或 Baiduspider。也就是说,日志出现“Googlebot”字样,只能说明有人这么写了,不能说明它真是 Google 的抓取程序。判断真假,要看来源 IP 及其归属,而不是看字符串。
三个可以落地的验证步骤
- 反向 DNS 解析。对访问 IP 做 PTR 查询,Googlebot 的解析结果通常以 googlebot.com 或 google.com 结尾,百度蜘蛛一般是 baiduspider-xx.xx.baidu.com 这类形式。查到域名后,再对该域名做一次正向解析,确认能回到原来的 IP,这一步就能过滤掉绝大多数伪造。
- 核对官方抓取 IP 段。搜索引擎会公布自己的抓取 IP 范围,把日志里的 IP 和官方列表比对,比只看 UA 可靠得多。这种方法对批量日志也容易实现,适合定期跑一次。
- 看行为特征。真蜘蛛通常会请求 robots.txt,抓取速度相对克制,请求的 UA 与 IP 归属一致;伪装爬虫往往只抓页面不读 robots,并发高、频率整齐、路径集中在少数几个链接上。
容易被误判的几种情况
- CDN 或 WAF 回源。源站日志里可能只看到 CDN 节点 IP,真实蜘蛛 IP 被放在 X-Forwarded-For 一类的头里。只看 REMOTE_ADDR,会把所有真蜘蛛都认成假的。
- 同一种蜘蛛有多个 UA 变体。图片、新闻、移动渲染等抓取往往使用不同的 UA 字符串,规则里只写一个关键词会漏统计。
- 反向解析查不到不等于假冒。部分 IP 段本身没有 PTR 记录,DNS 临时故障也会导致查询失败。遇到这种情况建议隔一段时间复测,再决定是否拦截。
- 只按单个 IP 封禁。真实抓取会从多个 IP 轮换,一刀切封段可能误伤,也会让后续判断失去样本。
分不清真假会带来什么后果
把真蜘蛛当成假蜘蛛封掉,入口页的链接就不会被发现,目标 URL 也就少了一条被发现路径;反过来把伪装爬虫当成真蜘蛛,会让你误以为入口页已经被搜索引擎大量抓取,从而错误调整更新和提交节奏。两种偏差都会影响站点运营的判断,而且往往要过很久才会暴露。
建议的日志观察清单
- 记录时间、IP、UA、请求路径、状态码、响应时间这几个基础字段。
- 按 IP 聚合访问频次,先找出高频且路径单一的来源。
- 对可疑 IP 依次做 PTR 查询、正向校验、官方 IP 段比对。
- 对确认的真蜘蛛单独统计入口页抓取次数和返回状态码,观察入口页本身是否正常响应。
日志能告诉你“谁来过”,但不能告诉你“会不会收录”。把它当作排查工具,而不是结果指标。
小结
分辨真假搜索蜘蛛,本质上是一个核对来源的过程:先解析 IP,再核对官方段,最后看行为是否自洽。别用 UA 关键词做统计口径,也别把 CDN 日志当源站日志。只有先确认来访者是谁,后续关于入口页抓取频率、链接发现节奏的判断才有意义。