看懂日志里的爬虫:正常与恶意
发布时间:2026-09-15 13:56       
更新时间:2026-09-16 08:26
访问日志里爬虫的请求量超过真人,是多数网站的常态。要做的不是见爬虫就封,而是先分清谁在正常工作、谁在消耗资源甚至找漏洞。
一、日志里的常见 UA
正规爬虫会在 UA(User-Agent,请求方自报的身份字符串)里亮明身份,各搜索引擎的爬虫标识固定,比如 Baiduspider、Googlebot、bingbot。日志里数量庞大的还有各种空 UA、curl、python-requests,以及冒充正规爬虫名字的伪装者——UA 是自报家门,谁都可以写,这是认识爬虫的第一课。UA 解析只是第一步,它决定后续怎么分组统计,不直接决定封不封。
二、频率特征先统计
正常爬虫的抓取匀速分散,单 IP 每秒一两次以内;恶意爬虫通常突发高频,一个 IP 每秒几十次连打几个小时。先用一条命令把来源 IP 排个序:
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
高居榜首、请求量比第二名高一个数量级的,就是重点观察对象。时间分布也是一个维度:正常爬虫全天均匀,恶意爬虫常在深夜集中爆发,请求量按小时聚合一眼可见。再看请求路径分布:均匀遍历全站的多半是采集器;集中扫描后台路径、.env、备份文件的是漏洞扫描器,后者要优先处理。
三、反向 DNS 验真
冒名者很容易识破:拿对方 IP 做反向解析(Linux 下 host 1.2.3.4),正规爬虫的 IP 能解析回所属搜索引擎的专属域名;再把解析出的域名正向解析回来(host 域名),结果回到同一个 IP,才算验明正身。两步对不上的一律按伪装处理。这套验证只对冒用搜索引擎名义的爬虫有意义,对 curl、空 UA 这些无所谓真伪,直接按行为处理。
四、一句提醒
统计先行,处置在后。日志没看清楚之前就上封禁规则,误伤真实用户和正规爬虫的概率不低,而且误伤往往过几天才被发现。正规爬虫带来的是搜索流量,封之前掂量一下业务是否承受得起,被降抓取的代价远大于省下的那点带宽。