1. 程式人生 > >Life is tragedy,Need you to struggle,to fighting..

Life is tragedy,Need you to struggle,to fighting..

現在的網路爬蟲越來越多,有很多爬蟲都是初學者寫的,和搜尋引擎的爬蟲不一樣,他們不懂如何控制速度,結果往往大量消耗伺服器資源,導致頻寬白白浪費了。

其實Nginx可以非常容易地根據User-Agent過濾請求,我們只需要在需要URL入口位置通過一個簡單的正則表示式就可以過濾不符合要求的爬蟲請求:

    ...
    location / {
        if ($http_user_agent ~* "python|curl|java|wget|httpclient|okhttp") {
            return 503;
        }
        # 正常處理
        ...
    }
    ...

變數$http_user_agent是一個可以直接在location中引用的Nginx變數。~*表示不區分大小寫的正則匹配,通過python就可以過濾掉80%的Python爬蟲。