帮助中心

   

热门搜索: 免费续期  推广  永久会员

代理服务器如何阻止部分IP进行访问?

代理服务器能够将频繁访问的IP加入黑名单吗?如果遇到一些频繁请求的IP地址,代理服务器要怎么设置才可以将这些IP拒绝访问?

代理服务器如何阻止部分IP进行访问

渗透者在扫站的时候会频繁请求,我们可以做一些策略来封堵这些频繁访问的ip,把ip加入黑名单。

策略:

2秒之内访问次数超过100,加入黑名单。

实现思路:

初次访问把访问IP作为键,访问IP,时间,次数(初始值为1)封装为一个对象作为value,放入map。

开启定时器,定时器每秒执行一次,在定时器里面循环map,2秒之内访问次数超过100的ip加入黑名单数组,同时清除加入黑名单ip对应的map key和value.

在代理程序之前,判断请求过来的ip是否在黑名单,如果在,就拒绝访问。

下面我们跟着迅联加速来看看实现的核心代码:

# 核心代码

/**

www.qingmiaokeji.cn

* ip 频繁访问限制策略

* 2秒之内访问次数超过100,加入黑名单。

* 可能存在并发问题

* @constructor

*/

function IPPolicy () {

this.cache = {};

this.blackIpList=[];

var $this = this;

setInterval (function () {

var nowTime = new Date().getTime();

for(ip in $this.cache){

var item = $this.cache[ip];

var timeDif = nowTime – item.visitTime;

if(timeDif<2000 && item.count>100 ){

$this.blackIpList.push(ip)

delete $this.cache[ip];

}else{

item.count = 0;

}

}

},1000)

}

IPPolicy.prototype.addVisitIp = function (ip) {

if(this.cache[ip]){

this.cache[ip].count = this.cache[ip].count+1;

this.cache[ip].visitTime =new Date().getTime();

}else{

this.cache[ip] ={“ip”:ip,”count”:1,”visitTime”:new Date().getTime()}

}

}

通过将访问次数过多的IP加入到黑名单,我们就可以让代理服务器不受这些IP的骚扰了。

关闭
19907977089
关注微信公众号,免费送30分钟时长