nginx限制爬虫频率(详解Nginx服务器屏蔽网络爬虫的方法---User-Agent过滤请求)

概述

每个网站通常都会遇到很多非搜索引擎的爬虫,这些爬虫大部分都是用于内容采集或是初学者所写,它们和搜索引擎的爬虫不一样,没有频率控制,往往会消耗大量服务器资源,导致带宽白白浪费了。下面介绍下怎么通过nginx来屏蔽网络爬虫的方法。

附一张没啥用的图:

nginx限制爬虫频率(详解Nginx服务器屏蔽网络爬虫的方法---User-Agent过滤请求)(1)

浏览器输入URL后HTTP请求的完整过程


思路

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爬虫。


Nginx中禁止屏蔽网络爬虫

server { listen 80; server_name _; client_max_body_size 1024m; ssi on; ssi_silent_errors on; if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") { return 403; } location /XXX { ........... }

nginx限制爬虫频率(详解Nginx服务器屏蔽网络爬虫的方法---User-Agent过滤请求)(2)

配置后重启可以用curl 测试一下

curl -I -A "qihoobot" www.gzwise.top

nginx限制爬虫频率(详解Nginx服务器屏蔽网络爬虫的方法---User-Agent过滤请求)(3)


总结

上面主要是介绍通过User-Agent过滤网络爬虫请求的一个方式,大家有空也可以自己测试一下,后面会分享更多关于nginx方面内容,感兴趣的朋友可以关注下!

nginx限制爬虫频率(详解Nginx服务器屏蔽网络爬虫的方法---User-Agent过滤请求)(4)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页