本文介紹 Nginx 禁止指定 UA 訪問(wèn)的配置。
UA,即 Http User Agent,在 Nginx 中使用內(nèi)置變量 $http_user_agent 表示,該信息作為 request header 的一部分被發(fā)往 webserver。因此,對(duì) webserver 來(lái)說(shuō),有一種禁止訪問(wèn)的方式,就是對(duì) UA 進(jìn)行判斷。
禁止搜索引擎爬蟲
因?yàn)槟愣脑颍⒉皇翘M?Baidu 這類爬蟲來(lái)我的網(wǎng)站,所以在 Nginx 中使用 if 對(duì) UA 進(jìn)行判斷:
1
2
3
|
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|^$") { return 444; } |
禁止下載工具
1
2
3
|
if ($http_user_agent ~* "Scrapy|HttpClient|Curl|Wget|Idm|Aria2|Axel|Thunder|Youtube-dl|Movgrab|rtorrent|ctorrent|Transmission-cli|vuze") { return 444; } |
禁止國(guó)產(chǎn)瀏覽器訪問(wèn)
1
2
3
|
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" ) { return 444; } |
禁止指定系統(tǒng)訪問(wèn)
也有某些國(guó)產(chǎn)系統(tǒng),例如 aliyun os 這樣的,我也想禁止它的訪問(wèn):
1
2
3
|
if ($http_user_agent ~* "yunos" ) { return 444; } |
結(jié)論
根據(jù)以上可以看出,要對(duì) UA 進(jìn)行判斷,規(guī)則就是:
1
2
3
|
if ($http_user_agent ~* "UA關(guān)鍵詞" ) { ... } |
不過(guò)這種方法缺點(diǎn)很明顯,因?yàn)?UA 實(shí)在太容易偽造了 ,不過(guò)防一下不經(jīng)偽造的請(qǐng)求(例如國(guó)產(chǎn)搜索爬蟲)還是可以的。當(dāng)然也有些更靠譜的方式,例如對(duì) session 的驗(yàn)證。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://sometimesnaive.org/article/62