使用Nginx过滤网络爬虫

如今的网络爬虫愈来愈多,有不少爬虫都是初学者写的,和搜索引擎的爬虫不同,他们不懂如何控制速度,结果每每大量消耗服务器资源,致使带宽白白浪费了。java

其实Nginx能够很是容易地根据User-Agent过滤请求,咱们只须要在须要URL入口位置经过一个简单的正则表达式就能够过滤不符合要求的爬虫请求:python

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

变量$http_user_agent是一个能够直接在location中引用的Nginx变量。~*表示不区分大小写的正则匹配,经过python就能够过滤掉80%的Python爬虫。wget也不能get到数据:正则表达式

相关文章
相关标签/搜索