很多人看蜘蛛池里入口页的访问日志时,只盯着一栏:UA 里有没有出现搜索引擎的名字。只要对上,就当成真蜘蛛,然后开始判断入口页质量好不好、抓取是不是变多了。问题是 UA 由请求方自己填写,伪装成本极低。如果入口页还要承担评估抓取情况的作用,先做一层身份核验,比后面调结构、换模板都更划算。
一、为什么先核验,再谈抓取数据
入口页日志里通常混着三类流量:真搜索引擎蜘蛛、各种爬虫工具与采集脚本、以及带着蜘蛛 UA 的普通请求。三类流量在日志里长得几乎一样,含义却完全不同:真蜘蛛来得多,说明路径至少被发现了;脚本刷出来的“蜘蛛”,只会让统计数字好看,还会误导后续判断。
先核验身份,至少解决两个问题:一是抓取量、重访间隔这些指标不被注水;二是当某个 IP 段持续高并发请求时,能分清是正常抓取还是骚扰。
二、三条可以交叉验证的线索
UA 字符串:只作初筛
UA 是线索,不是证据。它可以被任意构造,连版本号和系统信息都能照抄。实践上建议把 UA 当作第一层过滤:先按关键词分成 Googlebot、Baiduspider、bingbot、YandexBot 等几组,再进入下一步核验。
IP 归属与 ASN:看请求从哪来
搜索引擎的抓取 IP 通常来自相对固定的网段。把日志里的来源 IP 做一次归属查询,看 ASN 与运营商是否符合对应搜索引擎的特征,能筛掉大部分明显不对的请求。有两点要注意:同一搜索引擎可能有多段 IP,不要只认一段;也不要因为归属地不在某个国家就直接判定为假,CDN 与云服务会让归属信息失真。
反向解析加正向回查:成本最高,也最靠得住
对支持反向 DNS 验证的蜘蛛,可以做两步:先对来源 IP 做反向解析得到主机名,再对该主机名做正向解析,看是否回到同一个 IP。两步都吻合,可信度才高。国内搜索引擎不一定提供同样机制,这时更多依赖官方公布的 IP 段列表来比对。
三、一个可落地的核验流程
- 日志预处理:把入口页访问日志按 UA 关键词分组,标出疑似搜索引擎的请求。
- IP 比对:与官方 IP 段列表或已知网段比对,标记命中与未命中。
- 反向解析:对未命中但 UA 可信的 IP,做反向与正向解析验证。
- 行为观察:看请求频率、路径分布、是否加载静态资源。真蜘蛛通常有一定节奏,也会带走页面里的资源;脚本常常只抓 HTML,频率还异常集中。
- 归档复用:把确认过的 IP 段存成白名单,后续日志分析直接引用,减少重复劳动。
四、容易误判的几种情况
- 只按 UA 判断:把带蜘蛛字样的请求全部算作抓取,指标虚高。
- 只按 IP 判断:搜索引擎扩容新网段后,旧列表会漏判,把真蜘蛛当成假的。
- 忽略静态资源:有些蜘蛛抓完 HTML 不一定会立刻抓 CSS 和 JS,不能只凭这一点判假。
- 把移动 UA 当异常:移动版蜘蛛的 UA 与桌面版不同,属于正常现象。
- 把集中请求一律当攻击:入口页之间链接密集时,短时间内的集中抓取也可能来自真蜘蛛。
五、核验之后怎么用
核验结果主要用在三件事上:一是让抓取统计回到真实水平,避免拿注水数据做决策;二是识别出持续高频的伪装请求,必要时在服务器或防护层做限制;三是把确认过的网段白名单化,方便后续分析重访率、抓取深度这类指标。
需要提醒的是,核验只能回答“这次请求是不是搜索引擎蜘蛛”,回答不了“这个页面会不会被收录”。收录与排名还取决于内容质量、站点整体情况等因素,没有哪种技术手段可以替代这一层。
把 UA 当入口、把 IP 和解析当验证、把访问行为当补充,三层交叉基本够用;单看任何一层,都容易得出相反结论。