建议: 增加根据UA限制访问频率的功能。
已经实现的启用流量控制功能,虽然可以控制单IP并发,但对于某些狂暴属性的蜘蛛来说,是毫无用处的。
最近站点遇到sogou蜘蛛狂暴,间歇性的发起在1秒内,数十个IP同时抓取的情况,负载最高可以到60,真的是无情。因为网站在搜狗这边每天还能有3K左右的IP,所以单纯靠屏蔽UA访问的方法是不理智的。所以我就在想能否通过识别固定的UA,来限制访问频率。后来经过一下午的百度(因为我是个美术生……哎~),目前来看是实现了我想要的结果:限制搜狗蜘蛛最多每秒请求3次,超量的返回503。
那么问题来了,
我在百度文章和发帖求助的时候,很多人表示都有过类似经历,被yisouspider或baidu或sogou长期折磨过,并且更有甚者可以导致主机被暂停,说白了都是小白,或者直接屏蔽UA的大神。 所以我觉得这个功能是有必要做出来,这样类似我这样的小白,也可以简单高效的防止意外的发生,更安心的做网站。
因为考虑到这不算是个难事,所以就来发帖,希望技术哥可以将它加入计划。
输入UA后,设置访问频率的限制,确认。
====
附带我今天下午的百度结果:
1、如果你需要直接屏蔽某辣鸡蜘蛛的UA,比如国外的搜索引擎,或者其他蜘蛛小白的恶意抓取:
if ($http_user_agent ~* (Bench|bench|Apache|apache) ) { return 503;}
放置到配置文件中就好。
2、如果需要像我一样限制某UA的访问频率:
#全局配置 (NGINX的配置文件)
limit_req_zone $anti_spider zone=anti_spider:10m rate=15r/m;
#某个server中 (具体网站的配置文件)
limit_req zone=anti_spider burst=5 nodelay;
if ($http_user_agent ~* "xxspider") {
set $anti_spider $http_user_agent;
}
15r/m 的意思是每分钟15次,还可以设定为 3r/s 就是每秒3次。
其他看自己了,再见!
|