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处理http请求实现过程解析
Mar 31 Servers
Nginx域名转发https访问的实现
Mar 31 Servers
详解nginx进程锁的实现
Jun 14 Servers
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
Sep 25 Servers
CentOS安装Nginx并部署vue
Apr 12 Servers
idea下配置tomcat避坑详解
Apr 12 Servers
Ubuntu Server 安装Tomcat并配置systemctl
Apr 28 Servers
nginx lua 操作 mysql
May 15 Servers
nginx 配置指令之location使用详解
May 25 Servers
nginx设置资源请求目录的方式详解
May 30 Servers
win server2012 r2服务器共享文件夹如何设置
Jun 21 Servers
WIN10使用IIS部署ftp服务器详细教程
Aug 05 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
浅谈js闭包理解
2019/03/28 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
python采用getopt解析命令行输入参数实例
2014/09/30 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
数据库基础的一些面试题
2012/02/25 面试题
《风娃娃》教学反思
2014/04/19 职场文书
课程设计的心得体会
2014/09/03 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书