url过滤怎么解除_详解Nginx服务器屏蔽网络爬虫的方法---User-Agent过滤请求

概述

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

附一张没啥用的图:

008a75173d3cc610c4664a6a7758b31f.png

浏览器输入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 { ........... }
de55a9e0c30cc4e1b9c8bf318e063dac.png

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

curl -I -A "qihoobot" www.gzwise.top
480a011513b0d4e22665a9156417a654.png

总结

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

87fcb038773c88c156bb2d3245557ee7.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值