开发者社区> zhoubj> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

发现和拦截恶意爬虫

简介: 互联网爬虫的种类众多,本文主要介绍了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

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

相关文章
【安全合规】爬虫第一课
这也是我在这个平台上第一次写博客来记录学习过程。有错误请大家多多指教!接下来就让我们一起开始吧!!!
69 0
webpack-react 之 webpack 篇(上)
从webpack开始 本篇从零开始,详细记录webpack的各个方面。 文章中将会放入很多链接以便扩展,我也会归纳总结,不读扩展不会影响到对本文的理解,但是有时间还是看看吧。
2038 0
FreeBuf爬虫
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.
1128 0
BIP_开发案例10_BI Publisher报表国际化多语言的实现(案例)
2014-12-26 Created By BaoXinjian 一、摘要 BI Publisher国际化支持 1. 日历和时区设置 (1). 命令控制 (2). Profile控制 XDO: Calendar Type和Client Timezone 2. 模版Translation 可以将模版的文本提取为XML文件,发给相应的专业人士翻译成不同的语言,在运行时,将自动根据环境变量设置选择相应语言的RTF Template文件,从而实现模版的国际化。
1312 0
BIP_开发案例01_BI Publisher报表手工提交和控制(案例)
2014-12-27 Created By BaoXinjian 一、摘要 Package方法里先调用FND_REQUEST.ADD_LAYOUT添加模板, 然后调用FND_REQUEST.SUBMIT_REQUEST提交并发请求, 再调用FND_CONCURRENT.WAIT_FOR_REQUEST等待请求完成并返回分析,状态和完成信息。
773 0
Java网络爬虫的实现
记得在刚找工作时,隔壁的一位同学在面试时豪言壮语曾实现过网络爬虫,当时的景仰之情犹如滔滔江水连绵不绝。后来,在做图片搜索时,需要大量的测试图片, 因此萌生了从Amazon中爬取图书封面图片的想法,从网上也吸取了一些前人的经验,实现了一个简单但足够用的爬虫系统。
959 0
+关注
2
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载