没有所谓的捷径
一切都是时间最平凡的累积

nginx 屏蔽UA爬虫蜘蛛、禁止执行脚本、屏蔽ip

本文最后更新:2020年8月6日,已超过1531天未更新,如果文章内容失效,请留言反馈本站。

以下代码需添加到配置文件server段内


屏蔽指定UA爬虫蜘蛛和UA为空

if ($http_user_agent ~ "Scrapy|Go-http-client|Apache-HttpClient|HttpClient|SemrushBot|Webdup|AcoonBot|AhrefsBot|Ezooms|EdisterBot|EC2LinkFinder|jikespider|Purebot|MJ12bot|WangIDSpider|WBSearchBot|Wotbox|xbfMozilla|Yottaa|YandexBot|Jorgee|SWEBot|spbot|TurnitinBot-Agent|mail.RU|perl|Python|Xenu|ZmEu|wget|^$" ){
return 444;
}

 

禁止某个目录执行脚本

【单nginx下有效,如使用了nginx+apache组合,php交给apache处理,需要通过.htaccess进行限制】

  1. location ~* ^/(uploads|templets|data)/.*.(php|php5)$ {
  2. return 444;
  3. }

屏蔽某个IP或IP段

  1. #屏蔽192.168.5.23这个IP
  2. deny 192.168.5.23;
  3. #屏蔽192.168.5.* 这个段
  4. deny 192.168.5.0/24;

或者
if ( $remote_addr ~* "^(1.2.3.4|2.3.4.5|1.1.1\.)") {
return 444;
}

如果有CDN,可以在站点配置里面添加
if ($http_x_forwarded_for ~* "^(1\.2\.3\.[0-9]{1,3}|4.5.6.7)")
{
return 444;
}


禁止非GET|HEAD|POST方式的抓取

  1. if ($request_method !~ ^(GET|HEAD|POST)$) {
  2. return 444;
  3. }

防止文件被下载

  1. location ~ \.(zip|rar|sql|bak|gz|7z)$ {
  2. return 444;
  3. }

修改nginx配置之前务必做好备份,修改完毕后需要重载一次nginx,否则不会生效。

上面大部分规则返回444状态码而不是403,因为444状态码在nginx中有特殊含义。nginx的444状态是直接由服务器中断连接,不会向客户端再返回任何消息,比返回403更加暴力。

补充关于nginx的正则表达式

~ 区分大小写匹配

~* 不区分大小写匹配

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

^ 匹配的开头

$ 匹配的结尾

. * ?等需要转义

» 站长码字辛苦,有用点个赞吧,也可以打个
» 若转载请保留本文转自:豫章小站 » 《nginx 屏蔽UA爬虫蜘蛛、禁止执行脚本、屏蔽ip》
» 本文链接地址:https://blog.mydns.vip/1297.html
» 如果喜欢可以: 点此订阅本站 有需要帮助,可以联系小站
赞(0) 打赏
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除,联系邮箱:contact@mydns.vip。文章观点不代表本站立场。本站原创内容未经允许不得转载,或转载时需注明出处:豫章小站 » nginx 屏蔽UA爬虫蜘蛛、禁止执行脚本、屏蔽ip
分享到: 更多 (0)

评论 抢沙发


  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

智慧源于勤奋,伟大出自平凡

没有所谓的捷径,一切都是时间最平凡的累积,今天所做的努力都是在为明天积蓄力量

联系我们赞助我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏