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 反向代理之 proxy_pass的实现
Mar 31 Servers
Filebeat 采集 Nginx 日志的方法
Mar 31 Servers
nginx请求限制配置方法
Jul 09 Servers
Nginx配置之实现多台服务器负载均衡
Aug 02 Servers
详解nginx安装过程并代理下载服务器文件
Feb 12 Servers
nginx共享内存的机制详解
Mar 21 Servers
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
Apr 07 Servers
Windows Server 2016 配置 IIS 的详细步骤
Apr 28 Servers
nginx 配置指令之location使用详解
May 25 Servers
Nginx报错104:Connection reset by peer问题的解决及分析
Jul 23 Servers
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
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原理之变量(Variables inside PHP)
2013/08/09 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
php面向对象重点知识分享
2019/09/27 PHP
Javascript UrlDecode函数代码
2010/01/09 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
js判断横竖屏及禁止浏览器滑动条示例
2014/04/29 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
Python实现处理管道的方法
2015/06/04 Python
python实现将内容分行输出
2015/11/05 Python
python文件的md5加密方法
2016/04/06 Python
python目录与文件名操作例子
2016/08/28 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
Python中SQLite如何使用
2020/05/27 Python
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
实习鉴定范文
2013/12/19 职场文书
社团成立邀请函
2014/01/08 职场文书
素食餐饮项目创业计划书
2014/02/02 职场文书
职工运动会邀请函
2014/02/02 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
2015年团队工作总结范文
2015/05/04 职场文书