nginx 防盗链防爬虫配置详解


Posted in Servers onMarch 31, 2021

 新建配置配置文件 (例如进入到nginx安装目录下的conf目录,创建: agent_deny.conf)

禁止Scrapy等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; }

禁止指定UA及UA为空的访问

#forbidden Scrapy
if ($http_user_agent ~* (Scrapy|Curl|HttpClient))
{
  return 403;
}

#forbidden UA
if ($http_user_agent ~ "Bytespider|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" )
{
  return 403;
}

#forbidden not GET|HEAD|POST method access
if ($request_method !~ ^(GET|HEAD|POST)$)
{
  return 403;
}

然后,在网站相关配置中的 server段插入如下代码: include agent_deny.conf;

重启nginx:

/data/nginx/sbin/nginx -s reload

测试 使用curl -A 模拟抓取即可,比如:

curl -I -A 'YYSpider' <<www.xxx.con>>

结果

[root@11 conf]# curl -I -A 'YYSpider' www.xxx.cn
HTTP/1.1 403 Forbidden
Server: nginx/1.12.0
Date: Wed, 24 Apr 2019 11:35:21 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive

模拟UA为空的抓取:

curl -I -A' ' <<www.xxx.cn>>

结果

[root@11 conf]# curl -I -A' ' www.xxx.cn
HTTP/1.1 403 Forbidden
Server: nginx/1.12.0
Date: Wed, 24 Apr 2019 11:36:06 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive

模拟百度蜘蛛的抓取:

curl -I -A 'Baiduspider' <<<www.xxx.cn>>>

[root@11 conf]# curl -I -A 'Baiduspider' www.xxx.cn
HTTP/1.1 200 OK
Server: nginx/1.12.0
Date: Wed, 24 Apr 2019 11:36:47 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 12 Apr 2019 13:49:36 GMT
Connection: keep-alive
ETag: "5cb09770-264"
Accept-Ranges: bytes

UA类型

FeedDemon       内容采集
BOT/0.1 (BOT for JCE) sql注入
CrawlDaddy      sql注入
Java         内容采集
Jullo         内容采集
Feedly        内容采集
UniversalFeedParser  内容采集
ApacheBench      cc攻击器
Swiftbot       无用爬虫
YandexBot       无用爬虫
AhrefsBot       无用爬虫
YisouSpider      无用爬虫(已被UC神马搜索收购,此蜘蛛可以放开!)
jikeSpider      无用爬虫
MJ12bot        无用爬虫
ZmEu phpmyadmin    漏洞扫描
WinHttp        采集cc攻击
EasouSpider      无用爬虫
HttpClient      tcp攻击
Microsoft URL Control 扫描
YYSpider       无用爬虫
jaunty        wordpress爆破扫描器
oBot         无用爬虫
Python-urllib     内容采集
Indy Library     扫描
FlightDeckReports Bot 无用爬虫
Linguee Bot      无用爬虫

nginx 防盗链配置

背景:防止第三方引用链接访问我们的图片,消耗服务器资源和网络流量,我们可以在服务器上做防盗链限制。
实现防盗链的方式有两种:refer方式和签名方式。

refer方式实现防盗链

工作模块:ngx_http_referer_module。

作用变量:$invalid_referer,全局变量。

配置域:server, location

配置:

server {
  listen 80;
  server_name www.imcati.com refer-test.imcati.com;
  root /usr/share/nginx/html;
  location ~*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    valid_referers none blocked www.imcati.com;
    if ($invalid_referer) {
      return 403;
      }
   }
  }
  • valid_referers: 指定资源访问是通过以下几种方式为合法,即白名单。 vaild_referers 有效的引用连接,如下,否则就进入$invaild_refere,返回403 forbiden。
  • none:允许缺失的头部访问。
  • blocked:允许referer没有对应值的请求。
  • server_names:若referer站点域名与server_name中本机配的域名一样允许访问。

到此这篇关于nginx 防盗链防爬虫配置详解的文章就介绍到这了,更多相关nginx 防盗链防爬虫配置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
使用Apache的rewrite
Mar 09 Servers
Nginx访问日志及错误日志参数说明
Mar 31 Servers
windows下快速安装nginx并配置开机自启动的方法
May 11 Servers
nginx+lua单机上万并发的实现
May 31 Servers
Nginx下SSL证书安装部署步骤介绍
Dec 06 Servers
Nginx+Windows搭建域名访问环境的操作方法
Mar 17 Servers
Apache Hudi集成Spark SQL操作hide表
Mar 31 Servers
Tomcat用户管理的优化配置详解
Mar 31 Servers
Windows Server 2008配置防火墙策略详解
Jun 28 Servers
如何让你的Nginx支持分布式追踪详解
Jul 07 Servers
django项目、vue项目部署云服务器的详细过程
Jul 23 Servers
Apache自带的ab压力测试工具的实现
Jul 23 Servers
Nginx服务器如何设置url链接
nginx搭建图片服务器的过程详解(root和alias的区别)
Mar 31 #Servers
Nginx代理同域名前后端分离项目的完整步骤
Mar 31 #Servers
Nginx+SpringBoot实现负载均衡的示例
win10安装配置nginx的过程
Filebeat 采集 Nginx 日志的方法
如何利用map实现Nginx允许多个域名跨域
Mar 31 #Servers
You might like
PHP实现事件机制实例分析
2015/06/26 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
php封装的验证码类分享
2017/02/26 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python实现换位加密算法的示例
2018/10/14 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
介绍一下木马病毒的种类
2015/07/26 面试题
学校联谊活动方案
2014/02/15 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
展览会邀请函
2015/02/02 职场文书
财务总监岗位职责
2015/02/03 职场文书
财产分割协议书
2016/03/22 职场文书
Python time库的时间时钟处理
2021/05/02 Python
python基础入门之普通操作与函数(三)
2021/06/13 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS