做入口页的人往往只关心结果:里面的链接有没有被搜索蜘蛛发现。但在这之前有一个更基础的问题——搜索蜘蛛到底来没来过。如果这一步都没确认,后面讨论链接数量、更新频率、参数处理其实都缺少依据。判断蜘蛛是否到访,不能只看统计工具里的「蜘蛛来访次数」,那类数据里有相当一部分是 User-Agent 直接伪造出来的。下面说几个相对靠谱的核对方式。
一、先看服务器原始访问日志
统计工具会对日志做过滤、归类和抽样,出现误判很正常。要确认抓取,最好直接翻服务器原始日志,那里至少包含访问时间、IP、User-Agent、请求路径和状态码这几项。先按入口页地址筛一遍,看有没有带搜索引擎标识的请求。
二、User-Agent 只是第一步,不能单独采信
UA 字符串是可以随便写的,一段简单脚本就能把自己标成主流搜索引擎的蜘蛛。所以看到 UA 里带着蜘蛛名字,只能算线索,不能算证据。通常要再做两件事。
反向 DNS 验证
对访问 IP 做反向解析,看主机名是否落在搜索引擎自己的域名下;拿到主机名之后,再正向解析一次,看是否回到原 IP。两步都能对上,可信度才比较高。不同搜索引擎使用的验证域名不一样,用之前先查对应官方的说明,别照搬别家的规则。
核对官方公布的 IP 段
主流搜索引擎会公布蜘蛛使用的 IP 段,可以把日志里的 IP 和这些段做比对。注意这类列表会更新,不要拿几年前的备份一直用,否则容易把正常抓取误判成假蜘蛛,或者反过来放过伪造流量。
三、假蜘蛛常见的几个特征
- 只反复请求首页或入口页,对页面里的资源、后续路径完全没有兴趣;
- 请求频率异常高,短时间内密集打满整站;
- UA 拼写有误、版本号格式不符合官方习惯;
- 反向解析查不到结果,或者解析出来对不上正向记录;
- 只针对带特定参数的地址访问,对正常内容不闻不问。
如果同时命中两三条,基本可以先按伪装流量处理。
四、确认真蜘蛛之后,日志里该看什么
- 状态码:200 说明入口页正常返回;如果大量出现 429、403 或 5xx,说明入口页在拦截它,或者服务本身不稳定,这种情况链接发现会受明显影响。
- 抓取路径:它访问完入口页之后,有没有继续请求里面的目标地址。只抓入口页、不跟进时,重点检查链接是否可被解析、是否被 robots.txt 拦住、是否带了 nofollow 标记。
- 时间分布:偶发几次到访和持续、有节奏的抓取,含义完全不同。新上线的入口页通常需要一段时间才会进入相对稳定的抓取节奏。
- 抓到的版本:如果日志中的请求地址或参数和你当前版本对不上,可能是缓存内容,也可能是旧链接还在被访问。
五、入口页一直没被抓,检查这几项
- 入口页是否可以被公开访问,有没有被登录、验证码、访问频率限制挡住;
- robots.txt 是否误拦;
- 服务器是否长期响应超时或返回错误;
- 是否有外部页面指向这个入口页,纯靠新地址等蜘蛛自己爬到,通常比较慢;
- 是否在搜索资源平台提交过入口页地址。提交不等于被抓,但至少提供了一个入口。
六、要纠正的一个常见误解
日志里出现搜索蜘蛛,只能说明入口页被访问过。链接有没有被放进待抓队列、目标地址什么时候被抓、抓取之后是否收录,都是后面的环节。
把「日志里有蜘蛛」当成「URL 已经被发现并收录」,很容易得出错误结论,也会让后续调整失去方向。比较稳妥的做法是分三步看:先确认真实抓取,再看链接是否被跟进,最后才评估目标地址的抓取与收录情况。每一步分开判断,问题出在哪一段会清楚很多。