上一篇 下一篇 分享链接 返回 返回顶部

网站被大量爬虫访问的真实排查过程:User-Agent、IP频率与robots策略记录

发布人:tianfen 发布时间:2026-06-25 12:15 阅读量:1673

今天检查网站日志的时候,发现一个比较明显的异常:网站访问量突然多了不少,但从后台数据来看,并不像是真实用户访问。

页面访问看起来正常,网站没有直接打不开,但是服务器连接数比平时高,带宽也有小幅上涨。刚开始我以为是文章收录后带来的自然访问,后来仔细看日志才发现,其中有一部分访问并不是正常用户,而是大量爬虫请求。

爬虫访问这个问题不能简单处理。

如果全部拦截,可能会误伤搜索引擎蜘蛛,影响网站收录。

如果完全不管,又可能导致服务器资源被无效请求消耗。

所以这次我没有直接封IP,而是从 User-Agent、IP访问频率、请求路径和 robots 策略几个方向一步一步排查。

一、问题出现时的表现

这次问题的表现主要有几个:

网站可以正常打开。

服务器没有宕机。

CPU没有持续100%。

但是连接数比平时高。

访问日志增长速度明显变快。

部分页面偶尔加载变慢。

后台统计看不到明显真实转化。

从这些表现来看,网站不是被打崩了,但访问量确实异常增加。

这种情况最容易让人误判为“网站流量变好了”。

但实际流量有没有价值,要看访问来源和行为。

如果大量请求都是爬虫、采集器、扫描器,反而会给服务器带来压力。

二、第一步:先查看服务器连接情况

我先登录服务器查看连接数量。

netstat -an | wc -l

然后重点查看已经建立的连接:

netstat -an | grep ESTABLISHED | wc -l

连接数比平时偏高,但还没有达到服务器崩溃的程度。

接着查看当前系统状态:

top

CPU和内存没有明显爆满。

这说明当前问题还处于可控范围内,但如果不处理,后面可能会逐渐拖慢网站。

三、第二步:分析访问日志里的IP频率

爬虫访问是否异常,最直接的办法就是看访问日志。

我先统计访问次数最多的IP:

awk '{print $1}' /www/wwwlogs/access.log | sort | uniq -c | sort -nr | head

结果发现,前几个IP的请求次数明显高于普通用户。

正常用户访问网站,一般不会在短时间内连续请求几百上千次。

如果某个IP短时间内访问非常频繁,就要重点分析它到底在请求什么。

四、第三步:查看这些IP访问了哪些页面

只看IP次数还不够,因为搜索引擎蜘蛛也可能访问很多页面。

所以我继续查看高频IP访问的URL。

grep "异常IP" /www/wwwlogs/access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head

结果发现部分IP访问路径比较异常。

比如:

频繁访问不存在的路径。

大量请求搜索页。

不停翻页抓取文章列表。

访问一些明显不是正常用户会打开的目录。

还有一些请求带着奇怪参数。

这种访问行为就不像正常用户,更像采集器或者扫描器。

五、第四步:查看User-Agent信息

继续查看这些请求的 User-Agent。

grep "异常IP" /www/wwwlogs/access.log | awk -F\" '{print $6}' | sort | uniq -c | sort -nr | head

这里可以看到访问者声明的客户端信息。

有些 User-Agent 写得很明显,比如普通浏览器、搜索引擎蜘蛛、采集工具等。

但这里要注意一点:

User-Agent 是可以伪造的。

不是写着 Baiduspider 就一定是真的百度蜘蛛。

也不是写着 Chrome 就一定是真实用户。

所以不能只靠 User-Agent 判断,还要结合IP来源、访问频率和访问路径一起看。

六、第五步:区分正常蜘蛛和异常爬虫

对网站来说,搜索引擎蜘蛛不是坏事。

百度、必应、搜狗等正常蜘蛛抓取网站内容,有助于收录和更新快照。

但异常爬虫就不一样了。

正常蜘蛛通常有几个特点:

访问有一定规律。

不会短时间疯狂请求接口。

不会大量访问后台路径。

不会反复请求不存在的页面。

抓取频率相对可控。

异常爬虫通常表现为:

短时间请求频率很高。

不停翻页抓取。

大量访问搜索结果页。

访问不存在目录。

请求带有奇怪参数。

User-Agent混乱或频繁变化。

这次排查中,我发现有一部分是正常搜索引擎蜘蛛,还有一部分更像采集器。

所以处理时不能一刀切。

七、第六步:检查是否存在大量404请求

很多异常爬虫会扫描不存在的路径。

我统计了一下404请求。

grep " 404 " /www/wwwlogs/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head

结果发现部分IP产生了大量404。

这类请求对网站没有任何价值,还会增加服务器日志和处理压力。

如果一个IP一直请求不存在路径,基本可以判断为异常扫描或无效爬虫。

这类IP可以考虑限制或封禁。

八、第七步:检查是否爬取了后台和敏感路径

我又检查了是否有爬虫访问后台路径、登录入口或敏感文件。

grep -E "admin|login|wp-login|phpmyadmin|\.env" /www/wwwlogs/access.log | head

结果发现确实有部分请求在尝试访问常见后台路径。

这类访问基本不是正常用户,也不是正常搜索引擎蜘蛛。

比如:

wp-login.php

phpmyadmin

.env

admin

backup

这些路径如果网站本身并不存在,说明对方很可能是在批量扫描。

这种请求不仅浪费资源,还可能带来安全风险。

九、问题真正原因

排查到这里,问题基本清楚了。

这次网站访问量上涨,不完全是真实用户访问。

其中一部分来自正常搜索引擎蜘蛛。

一部分来自采集型爬虫。

还有一部分来自扫描器请求。

这些请求叠加后,导致:

访问日志增长很快。

连接数上升。

带宽有小幅增加。

部分页面偶尔变慢。

服务器虽然没有崩,但资源确实被无效请求占用了一部分。

所以这次问题不是单纯的攻击,也不是纯粹的正常流量,而是正常蜘蛛和异常爬虫混在一起造成的。

十、实际处理过程

确认原因后,我没有直接全站封禁,而是分情况处理。

1. 保留正常搜索引擎蜘蛛

对正常蜘蛛不做强拦截,避免影响网站收录。

尤其是百度蜘蛛、必应蜘蛛这类对网站收录有帮助的访问,需要谨慎处理。

但如果频率异常,也可以适当通过抓取频率、缓存和页面优化来降低压力。

2. 限制高频异常IP

对于短时间请求量非常高,并且访问路径明显异常的IP,可以做限制。

如果使用 Nginx,可以针对请求频率设置限制。

limit_req_zone $binary_remote_addr zone=spider_limit:10m rate=3r/s;

然后在对应站点配置里启用:

limit_req zone=spider_limit burst=10 nodelay;

这类限流建议先针对异常路径或接口,不建议一开始就全站套太严格。

3. 拦截明显恶意路径

对于一些明显无效路径,比如:

phpmyadmin

.env

wp-login.php

不存在的后台路径

可以单独拦截。

location ~* (\.env|phpmyadmin|wp-login\.php) {
    return 403;
}

这样可以减少无效扫描请求。

4. 优化robots.txt规则

robots.txt 不能防住恶意爬虫,但可以引导正常搜索引擎蜘蛛。

我对不需要收录的路径进行了限制,比如:

后台路径。

搜索结果页。

无意义参数页。

临时目录。

示例:

User-agent: *
Disallow: /admin/
Disallow: /login/
Disallow: /search
Disallow: /*?*
Sitemap: https://www.yeziidc.com/sitemap.xml

这里要注意,robots.txt 主要是给正规爬虫看的,不是安全防护工具。

真正恶意的爬虫不一定遵守 robots。

十一、处理后的效果

处理完成后,我继续观察访问日志。

高频异常请求明显减少。

404扫描请求下降。

服务器连接数回落。

带宽曲线恢复稳定。

正常页面访问没有受到影响。

搜索引擎蜘蛛访问也没有被误伤。

这说明分层处理比一刀切封禁更稳。

十二、这次排查的经验总结

网站被大量爬虫访问时,不能简单判断为好事,也不能直接当成攻击。

正确做法是先区分:

哪些是真实用户。

哪些是正常搜索引擎蜘蛛。

哪些是采集器。

哪些是扫描器。

如果正常蜘蛛抓取多,说明网站内容可能开始被关注。

如果异常爬虫太多,就要限制频率。

如果扫描器请求敏感路径,就要直接拦截。

爬虫问题最怕一刀切。

一刀切可能误伤收录,不处理又会浪费服务器资源。

十三、后续优化措施

为了避免后续大量爬虫再次影响网站,我做了几个长期优化。

第一,定期查看访问日志。

第二,统计高频IP和高频URL。

第三,关注404请求来源。

第四,robots.txt 保持清晰。

第五,后台路径不要暴露太明显。

第六,异常接口设置限流。

第七,静态资源尽量走CDN缓存。

第八,不轻易屏蔽正常搜索引擎蜘蛛。

做网站不是只看访问量,访问质量也很重要。

如果大量访问没有转化、没有收录价值,还消耗服务器资源,就需要及时处理。

写在最后

这次网站被大量爬虫访问,最终不是单纯的流量增长,也不是服务器故障,而是正常蜘蛛、采集爬虫和扫描请求混在一起导致访问压力上升。

站长遇到这种情况,不要急着封IP,也不要完全不管。

先看日志,再看IP频率,再看User-Agent,再看访问路径,最后再决定是放行、限流还是拦截。

网站长期运营,爬虫访问一定会越来越多。

关键不是完全禁止爬虫,而是让有价值的爬虫进来,把无效和异常请求挡在外面。

目录结构
全文