记一次与爬虫之间的周旋

对于大多数站长或者建站初期的运维童鞋们,都希望各种蜘蛛爬虫天天来光顾自己的网站,而对于有些网站却被怕爬虫搞得鸡犬不宁。

前段时间一个客户整天跟我说网站慢的不行,我就说并发大呗,带宽不够加带宽,前几次说之后带宽从5M加到8M再到10M,依然秒到峰值,并且从访问统计来看,并没有多少流量,那是咋回事儿呢?由于最近也比较忙,这个事儿一直在拖着,上周开始,客户几乎每天都跟我说带宽满、网站慢、服务器卡,我也很着急,远程服务器一看CPU一直都在90以上,java进程下载持续在5M以上,跟踪进程看都是RDS数据库访问,也不觉得有什么,但不知道问题所在。当时猜测有可能是爬虫爬的。

周末服务器宕机了,然后周一大早上客户就说网站卡的不行,立即啥都先放下,请教周老师,开始jstat、jconsole各种监控,但除了发现大多都是数据库链接之外,其他还是一无所获。周老师说有没有请求的log,我说有是有,关键是Nginx日志一直未做过切割,现在都20多G,没法跟踪啊。周老师说,那服务器能不能先停会儿,将log备份一下,重启。服务器停的那一刻,确实是CPU,带宽都降下来了。当起来之后,不到30秒,再次飘红!!!然后看Nginx日志,就这一会儿就已经3M了,我们来看一下日志内容:

 111.png


果然是爬虫,每秒都请求N次,我们开始了反爬虫斗争。

第一个方案:禁IP

查到yisouSpider的几个IP段,通过Nginx直接deny,禁了大概7、8个IP,然后重启Nginx,重启之后发现一会儿又红了,看来这不行,继续看日志

222.png

原来这是来自很多家的爬虫啊,每一家感觉自己请求量有限,没啥影响,但你们组团,那哪行。

开始第二个方案:限制爬虫请求频率

周老师不愧是老司机,对付各种疑难杂症都游刃有余,最后给Nginx加个爬虫的请求频率的限制,然后罗列常见的爬虫规则,如下:

#全局配置(加在http下)
limit_req_zone $anti_spider zone=anti_spider:20m rate=1r/m;
#server配置(加在server下)
limit_req zone=anti_spider burst=30 nodelay;if ($http_user_agent ~* "AhrefsBot|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") {            set $anti_spider $http_user_agent; }


再次重启Nginx,世界终于清静了,再看Nginx日志,爬虫高频率请求已经成功拦截,膜拜周老司机。

333.png

跟客户反馈处理结果,及实际情况说明之后,客户说准备加到12M带宽呢~~~请不要酱紫,此处可扔砖头。跟客户说,这种情况是多少站长期待的,比如我这个小博客~~~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值