Nginx禁止指定UA访问的方法
本文介绍Nginx禁止指定UA访问的配置。
UA,即HttpUserAgent,在Nginx中使用内置变量$http_user_agent表示,该信息作为requestheader的一部分被发往webserver。因此,对webserver来说,有一种禁止访问的方式,就是对UA进行判断。
禁止搜索引擎爬虫
因为你懂的原因,并不是太希望Baidu这类爬虫来我的网站,所以在Nginx中使用if对UA进行判断:
if($http_user_agent~*"qihoobot|Baidu|Baiduspider|Baiduspider-image|Baiduspider-video|Baiduspider-news|Baiduspider-favo|Baiduspider-cpro|Baiduspider-ads|Baiduboxapp|YisouSpider|EasouSpider|YodaoBot|YoudaoBot|Sosospider|Sogou|^$"){ return444; }
禁止下载工具
if($http_user_agent~*"Scrapy|HttpClient|Curl|Wget|Idm|Aria2|Axel|Thunder|Youtube-dl|Movgrab|rtorrent|ctorrent|Transmission-cli|vuze"){ return444; }
禁止国产浏览器访问
if($http_user_agent~*"360|360SE|360EE|2345Explorer|maxthon|sogou|theworld|qiyu|green|qq|qqbrowser|tt|liebao|lbbrowser|tao|taobao|coolnovo|saayaa|uc|mi|xiaomi|baidu|yandex|micromessenger|wechat|weibo|douban|suning|iqiyi|alipay|ali-ap|ali-ap-pd|ali-am|ali-tb|ali-tb-pd|ali-tm|ali-tm-pd"){ return444; }
禁止指定系统访问
也有某些国产系统,例如aliyunos这样的,我也想禁止它的访问:
if($http_user_agent~*"yunos"){ return444; }
结论
根据以上可以看出,要对UA进行判断,规则就是:
if($http_user_agent~*"UA关键词"){ ... }
不过这种方法缺点很明显,因为UA实在太容易伪造了,不过防一下不经伪造的请求(例如国产搜索爬虫)还是可以的。当然也有些更靠谱的方式,例如对session的验证。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。