现在的位置: 首页 > 综合 > 正文

这两天被爬虫搞烦了

2013年08月17日 ⁄ 综合 ⁄ 共 1115字 ⁄ 字号 评论关闭

 这两天被爬虫搞烦了,把iis日志记录到数据库,用sql进行实时查询,发现就算是封IP,判断起来都要个过程,不是一眼能看出来的

1、我用sql倒排序top 10,发现不见得访问aspx次数最多的就是“应该封”的爬虫,因为有的用了很多个IP,平均下来每个IP访问次数不多,就算是top 30,都不一定在里面

2、有些爬虫做的好,倒是不应该封的,它会根据网站的情况来爬,比如iis已经被爬死了,它探测到不能访问,就停止爬了,如果只是简单的select top 100 clienthost,count(clienthost) as count
from iis_log
where
 target like '%.aspx'
group by clienthost
order by count desc,clienthost desc

其实排在前面最几位的,可能就是优质爬虫,它虽然访问次数多,但是是在iis还正常的时候访问的;而有的爬虫你会发现,不管你iis死了没有,它每分钟的频率都差不多,真该死。所以说,还得结合至少精确到分钟的的group by clienthost

3、在前端用netstat看状态?

比如 netstat -na|grep tcp|gawk '{print $5}'|sed 's/::ffff://g'|grep -v "::"|grep -v "://*"|gawk 'FS=":" {print $1}'|grep -v "127.0.0.1"|sort |uniq -c |sort -nr

这条命令,可以按连接次数IP倒排序,输出的内容类似

69 218.213.241.149
     65 116.23.209.15
     62 121.32.51.166
     57 218.240.137.162
     52 123.113.33.243
     45 221.238.245.116
     45 220.180.129.102
     44 222.243.5.91
     42 60.209.42.134
     39 221.212.195.202
......................

有人说把前几位都封了,写个脚本自动加入iptables进行DROP,然后也可以定时清除,不用永久封的,给它一个改正的机会吧

我觉得这样做也不完美,容易误杀,理由:

1、我设定数值为多少就封?30?40?50?这个白天和晚上也不同的

2、其实我打开一个页面,我这个客户端的IP在上面输出来就不止1,我理解为毕竟这个页面里面有图片嘛,反正输出统计我看到是3个,难道说我同时打开了几个页面,数值达到几十,就自己把自己给封了?

 

那么,怎么才能把netstat的状态和iis里具体访问的内容日志结合起来分析呢??

继续学习中。。。。

抱歉!评论已关闭.