发现和拦截恶意爬虫-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

发现和拦截恶意爬虫

简介: 互联网爬虫的种类众多,本文主要介绍了nginx网站如何发现恶意爬虫和拦截恶意爬虫。 发现问题 某日,收到A服务器所有网站打开缓慢的反馈,首先登陆到A服务器,查看nginx、php和mysql都正常运行,通过top命令查看发现服务器CPU、内存、系统负载均正常,通过云监控进行查看发现外网网卡出流量和数据包发送量很大 通过命令sar –n DEV 1 4进行核实后确实是外网网卡网络存在问题。

互联网爬虫的种类众多,本文主要介绍了nginx网站如何发现恶意爬虫和拦截恶意爬虫。

发现问题

某日,收到A服务器所有网站打开缓慢的反馈,首先登陆到A服务器,查看nginx、php和mysql都正常运行,通过top命令查看发现服务器CPU、内存、系统负载均正常,通过云监控进行查看发现外网网卡出流量和数据包发送量很大

1

通过命令sar –n DEV 1 4进行核实后确实是外网网卡网络存在问题。
通过命令iftop -i eth1 –P对外网网卡流量情况进行分析排查发现http服务的tcp80端口占用了13+M/s的出流量。
接下来排查nginx站点日志发现XXXXX.com.log站点的日志存在日志量较大超过3G,打开日志发现大量的user-agent为Baiduspider 的访问,如下图
2

查看访问IP为不同的IP,通过命令nslookup ip进行查看发现不是百度官方的蜘蛛抓取,判断为恶意爬虫。

拦截恶意爬虫
正常爬虫通常会带有xxspider的user-agent标识,并且爬取的请求量不大,爬取URL和时间段都比较分散。合法的爬虫IP在做反向的nslookup或tracert时,一般都可以看到合法的来源地址。例如,下图显示了一条百度爬虫的记录。
1
而恶意爬虫可能会在某个时间段大量请求某个域名的特定地址/接口,这很可能是伪装成爬虫的CC攻击,或是经第三方伪装后,针对性爬取敏感信息的请求。当恶意爬虫请求量大到一定程度,往往可以造成服务器的CPU飙升,带来网站无法打开等业务中断问题。

在站点配置文件XXXXX.com.conf中加入以下代码阻止user-agent带有Baiduspider的访问,返回结果指定为403。
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") {
return 403;
}
此代码会屏蔽所有的爬虫,所以对搜索排名有要求的话建议不用使用此方法。重新载入XXXXX.com.conf后观察流量情况发现流量恢复正常。网站访问恢复正常。
2

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: