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 相关文章推荐
Nginx 502 Bad Gateway错误原因及解决方案
Mar 31 Servers
nginx proxy_cache 缓存配置详解
Mar 31 Servers
教你快速开启Apache SkyWalking的自监控
Apr 25 Servers
Nginx设置HTTPS的方法步骤 443证书配置方法
Mar 21 Servers
Docker官方工具docker-registry案例演示
Apr 13 Servers
nginx配置之并发频次限制
Apr 18 Servers
安装harbor作为docker镜像仓库的问题
Jun 14 Servers
服务器SVN搭建图文安装过程
Jun 21 Servers
Windows server 2003卸载和安装IIS的图文教程
Jul 15 Servers
win7配置本地ftp服务器的图文教程
Aug 05 Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
Sep 23 Servers
码云(gitee)通过git自动同步到阿里云服务器
Dec 24 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 函数语法介绍一
2009/06/14 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
python实现excel读写数据
2021/03/02 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
tensorflow之并行读入数据详解
2020/02/05 Python
Python实现结构体代码实例
2020/02/10 Python
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
优秀共产党员先进事迹
2014/01/27 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
考试诚信承诺书
2014/05/23 职场文书
护理专业自荐书
2014/06/04 职场文书
机动车登记业务委托书
2014/10/08 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
用Python实现Newton插值法
2021/04/17 Python
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python
Go语言编译原理之源码调试
2022/08/05 Golang