发现和拦截恶意爬虫

互联网爬虫的种类众多,本文主要介绍了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时,一般都可以看到合法的来源地址。例如,下图显示了一条百度爬虫的记录。
发现和拦截恶意爬虫_第3张图片
而恶意爬虫可能会在某个时间段大量请求某个域名的特定地址/接口,这很可能是伪装成爬虫的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后观察流量情况发现流量恢复正常。网站访问恢复正常。
发现和拦截恶意爬虫_第4张图片

你可能感兴趣的:(发现和拦截恶意爬虫)