文章内容

2018/11/5 15:31:51,作 者: 黄兵

网页爬虫的一次反击

今天下午的时候,服务器告警频发,首先是cpu 100%,之后是网络跑满。看样子是有人在爬取我的网站了,没有限制速度,必须要限制。

下面是几张截图,可以看到当时的一些情况。

服务器cpu已经跑满,后面降下来是我限制了之后才降下来。


那就来说说是如何防御这次爬虫抓取网站的:

首先肯定要知道这个事是谁做的,需要查看访问者的ip地址,推荐使用这个工具:iftop。

登录主机后,执行 yum install iftop -y

如果是Ubuntu系统,请执行 apt-get install iftop -y

安装iftop工具,iftop工具为Linux下监控服务器流量的小工具

安装完毕后,执行 iftop

可以看到那个ip的流量比较高,因为当时急于防御,忘记截图,这个是事后的截图,大概是这个意思就行:

点击图片可以放大,观察了一会儿,219.137.228.28这个ip流量一直很大,就是这个ip,开始屏蔽他。

这个小工具的集体命令以及界面上的信息可以查看这篇文章:iftop命令详解


我网站的宽带也很小,是2M的小水管,这个爬虫一访问,这个网页打开很慢。

首先看一下防火墙策略:

iptables -L

如果是没有安装,直接按照提示安装一下就好了。

通常输出的链设置是空的:

之后开始屏蔽那个烦人的ip地址:219.137.228.28

iptables -A INPUT -s 219.137.228.28 -j DROP

详细解说一下这些参数的意思:参数-A INPUT给INPUT链增加了一条规则。而-s 219.137.228.28指定规则所针对的源IP,-j DROP指的是,当参数符合规则时,内核会将其丢弃。因此这台服务器会丢弃所有来自219.137.228.28的数据包。

设置好后看看规则,使用iptables -L命令:

屏蔽之后流量瞬间下降了很多,如下图所示:

如果需要将这条规则从规则中删除只需要输入如下命令:

 iptables -D INPUT 4

删除第四条规则。

具体命令含义可以看这篇文章:iptables


在服务器重启以后这些规则会丢失,主要原因是:这些规则保存在内存当中。需要定时备份规则,具体操作步骤查看这篇文章:Ubuntu 防火墙重启记录丢失


说在后面的话:

在线接收短信这个网站是允许大家抓取的,其实抓取也没有什么意义,这些短信验证码都是有时效性的,抓取了也没有什么意义。

但是请你在抓取的时候速度放慢一点,对我的业务不要造成影响。谢谢!


参考资料:

1、外网带宽占用高排查

2、《精通Linux》(第二版)中国工信出版集团,2017.8重印,(美)沃德(Ward,B.)著


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - 网页爬虫的一次反击

分享到:

发表评论

评论列表