电脑网络

Nginx服务器拒绝wget等方式扒站的简单方法

猴猴 ·

博主不是技术派,基本都是自己遇到一些问题了,才去想办法解决。解决了之后再分享出来,方便自己查找也方便别人查找。最近在讨论组中讨论到了扒站这个话题,就试了一下自己的站,果然毫不留情的就开始扒了,这才想起来赶紧封堵一下。虽然博客里也没啥东西,不过总归是个漏洞,还是封上的好。下面就分享一下两种方法:

一、根据User-Agent来阻止spider抓取。

把以下内容添加到站点的conf文件中,之后重启nginx即可。

#### 阻止抓取 ####
if ($http_user_agent ~* (Wget|ab) ) {
   return 403;
}

if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
            return 403;
}
##

二、利用防火墙来阻止过多的链接达到阻止扒站的目的

以Linux下的iptables为例,如下配置将限制同一个IP一分钟内最多建立15个连接,超出的连接会被iptables丢弃,不会到达nginx,具体设置多少根据自己的情况灵活运用。

/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60  --hitcount 15 -j DROP
service iptables save

其实还有其他的办法,只不过都有点复杂了,对于小站来说,这两种方法基本上已经够用啦。完成之后自己试验一下是不是已经不能通过简单的方法扒站了呢?

0 条回应