現(xiàn)在的網(wǎng)絡(luò)爬蟲越來越多,有很多爬蟲都是初學(xué)者寫的,和搜索引擎的爬蟲不一樣,他們不懂如何控制速度,結(jié)果往往大量消耗服務(wù)器資源,導(dǎo)致帶寬白白浪費(fèi)了。
其實Nginx可以非常容易地根據(jù)User-Agent過濾請求,我們只需要在需要URL入口位置通過一個簡單的正則表達(dá)式就可以過濾不符合要求的爬蟲請求:
...
location / {
if ($http_user_agent ~* "python|curl|java|wget|httpclient|okhttp") {
return 503;
}
# 正常處理
...
}
...
變量$http_user_agent是一個可以直接在location中引用的Nginx變量。~*表示不區(qū)分大小寫的正則匹配,通過python就可以過濾掉80%的Python爬蟲。