nginx 配置防爬虫

        今天早上查看服务器,发现昨天发布的一个在线解析充电桩协议的网页工具有大量的访问记录,应该是爬虫在爬api接口数据。该工具api接口后台用的是python写的,和大多数项目一样也采用nginx反向代理,由于采用nginx,可以利用nginx配置限制小部分小爬虫。

一 Nginx 防爬虫配置手段

通过在 Nginx 中配置防爬虫通常需要结合 IP 限制、UA(User-Agent)过滤、访问频率限制等手段配置防爬虫。

nginx 防爬配置

1 nginx主配置如下图:

2 nginx 指定域名配置如下图: 

图中配置说明:

nginx主配置是 在http部分是针对全局的,如果不配置子配置域名的server则会对所有站点会生效,在nginx 指定域名的server配置则只会对该域名生效。

测试效果如下:

1 频率限制:连续快速点击,超过频率时报429错误如下图:

2 基于 Referer 的过滤效果图:

以下针对上面所采用了三种防爬策略详细说明:

1 基于 User-Agent 的过滤

有些爬虫会使用特定的 User-Agent,可以通过配置拒绝这些 User-Agent。

server {listen 80;server_name example.com;location / {if ($http_user_agent ~* (curl|wget|python|scrapy)) {return 403; # 禁止常见爬虫工具}# 允许正常访问}
}
2 基于 Referer 的过滤

防止爬虫通过非当前站点域名发出的访问请求。

server {listen 80;server_name example.com;location / {#只允许来自指定域名的请求valid_referers none blocked example.com;if ($invalid_referer) {return 403;}}
}
3 限制ip访问频率

 由于爬虫访问与人工访问频繁完全不相同,可通过 limit_req 模块限制每个 IP 的访问频率。

http {limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s; # 每秒限制 5 次请求server {listen 80;server_name example.com;location / {limit_req zone=one burst=10; # 突发允许 10 次请求try_files $uri $uri/ =404;}}
}

小结 

nginx功能非常强大,仅通过简单的配置可以防止一部分小爬虫,这一点非常方便,但需要注意的是只是防住小部分,要想进一步做防爬,一般还要在接口层拦截器配合前端调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/68832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

到华为考场考HCIE的注意事项和考试流程

大家好,我是张同学,来自成都职业技术学院2021级计算机网络专业。最近成功通过了 Datacom HCIE 考试,在这里和大家分享一下我的经验。 考证契机 在母校的培养下,我接触到ICT这个行业,打好了基础,开始了成…

HarmonyOS快速入门

HarmonyOS快速入门 1、基本概念 UI框架: HarmonyOS提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。方舟开发框架可为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。 方…

Ext2 文件系统:数字世界的基石,深度解码超时空存储魔法

本篇博主将带大家深入底层探秘系统是如何与磁盘进行相互交流的,配合精美配图,细节讲解来带大家深入探究(注:本篇文章建议了解磁盘内部物理结果组成及设计再进行阅读)。 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C…

在centos上编译安装opensips【初级-默认安装】

环境:centos9 last opensips3.2 dnf update -y dnf install -y gcc make git automake libtool pcre-devel libxml2-devel \libcurl-devel postgresql-devel \bzip2-devel zlib-devel ncurses-devel libuuid-devel \libpcap-devel # 有报错的直接删除cd /usr/lo…

从零到上线:Node.js 项目的完整部署流程(包含 Docker 和 CICD)

从零到上线:Node.js 项目的完整部署流程(包含 Docker 和 CI/CD) 目录 项目初始化:构建一个简单的 Node.js 应用设置 Docker 环境:容器化你的应用配置 CI/CD:自动化构建与部署上线前的最后检查:…

类和对象——类的对象占用内存的大小计算

类的对象大小的计算 类的对象大小的计算1 案例分析2 如何计算类对象的大小案例分析中的猜测结构体内存对齐规则 类的对象大小的计算 1 案例分析 #include<iostream>class Date { public:void Init(int year, int mouth, int day) {year year;_mouth mouth;day_ day;…

nuxt3项目打包部署到服务器后配置端口号和开启https

nuxt3打包后的项目部署相对于一般vite打包的静态文件部署要稍微麻烦一些&#xff0c;还有一个主要的问题是开发环境配置的.env环境变量在打包后部署时获取不到&#xff0c;具体的解决方案可以参考我之前文章 nuxt3项目打包后获取.env设置的环境变量无效的解决办法。 这里使用的…

如何使用CRM数据分析和洞察来支持业务决策和市场营销?

如何使用CRM数据分析和洞察来支持业务决策和市场营销&#xff1f; 大家好&#xff01;今天咱们聊聊一个特别重要的话题——如何利用客户关系管理&#xff08;CRM&#xff09;系统中的数据进行分析与洞察能够帮助我们做出更好的业务决策以及提升市场营销效果。其实啊&#xff0…

STM32-CAN总线

1.CAN总线简介 CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线 2.CAN总线特征 两根通信线&#xff08;CAN_H、CAN_L&#xff09;&#xff0c;线路少&#xff0c;无需共地差分信号通信&#xff08;相对的是单端信号&#xff09;&#…

在线宠物用品|基于vue的在线宠物用品交易网站(源码+数据库+文档)

|在线宠物用品交易网站 目录 基于springbootvue的在线宠物用品交易网站 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&am…

StarRocks 怎么让特定的SQL路由到FE master节点的

背景 本文基于 StarRocks 3.1.7 大家都知道对于Starrocks来说 FE 是分 master和follower的&#xff0c;而只有master节点才能对元数据进行写操作。但是为什么呢&#xff1f;哪里有体现呢&#xff1f; 这其中的原因在网上是搜不到的&#xff0c;所以大家只知道只有master节点才…

AI时代下 | 通义灵码冲刺备战求职季

AI时代下 | 通义灵码冲刺备战求职季 什么是通义灵码使用智能编程助手备战求职靠谱吗体验心得 AI时代下&#xff0c;备战求职季有了不一样的方法&#xff0c;使用通义灵码冲刺备战求职季&#xff0c;会有什么样的体验&#xff1f; 什么是通义灵码 在开始话题之前&#xff0c;首…

Qt之QDjango-db的简单使用

QDjango是一款由C编写、依托于Qt库的Web开发框架&#xff0c;其设计理念受到了广受欢迎的Python框架Django的影响。这个项目旨在提供一个高效、灵活且易于使用的工具集&#xff0c;帮助开发者构建高质量的Web应用。其项目地址: https://gitcode.com/gh_mirrors/qd/qdjango&…

NoETL | 数据虚拟化如何在数据不移动的情况下实现媲美物理移动的实时交付?

在我们之前的文章中&#xff0c;我们回顾了Denodo在逻辑数据仓库和逻辑数据湖场景中所使用的主要优化技术&#xff08;具体内容请参阅之前的文章&#xff09;。 数据架构 | 逻辑数据仓库与物理数据仓库性能对比_物理数仓、逻辑数仓-CSDN博客文章浏览阅读1.5k次&#xff0c;点赞…

【Linux】Linux重要工具

Linux中一切皆文件&#x1f493;&#x1f493;&#x1f493; 目录 ✨说在前面 &#x1f34b;知识点一&#xff1a;Linux软件包管理器yum •&#x1f330;1. 什么是软件包 •&#x1f330;2. 查看软件包 •&#x1f330;3. 如何安装、卸载软件 &#x1f34b;知识点二&#…

K8S-Pod资源清单的编写,资源的增删改查,镜像的下载策略

1. Pod资源清单的编写 1.1 Pod运行单个容器的资源清单 ##创建工作目录 mkdir -p /root/manifests/pods && cd /root/manifests/pods vim 01-nginx.yaml ##指定api版本 apiVersion: v1 ##指定资源类型 kind: Pod ##指定元数据 metadata:##指定名称name: myweb ##用户…

【C++】在线五子棋对战项目网页版

目录 1.Websocket 1.1.Websocket的简单认识 1.2.什么是轮询呢&#xff1f; 1.3.websocket协议切换过程 1.4.websocketpp库常用接口认识 1.5.websocketpp库搭建服务器流程 1.6.websocketpp库搭建服务器 2.mysqlclient库-接口认识 3.项目模块的划分&#xff1a; 4.项目…

pytest+playwright落地实战大纲

前言 很久没有更新博客&#xff0c;是因为在梳理制作Playwright测试框架实战相关的课程内容。现在课程已经完结&#xff0c;开个帖子介绍下这门课程&#xff08;硬广, o(〃&#xff3e;▽&#xff3e;〃)o&#xff09; 课程放在CSDN学习频道&#xff0c; 欢迎关注~ PyTestPl…

数据结构-ArrayList和顺序表

1.线性表 线性表是n个具有相同类型的数据元素所组成的有限序列&#xff0c;当n0时&#xff0c;线性表为一个空表。 常见的线性表&#xff1a;顺序表&#xff0c;链表&#xff0c;栈和队列... 线性表在逻辑上是线性结构&#xff0c;可以说是连续的一条直线。但是在物理结构上…

红外热成像之无人机载荷

电力巡检 相较于传统的人工电力巡线方式&#xff0c;无人机巡检能够在高空对人工难以达到或无法检测的设备进行检测&#xff0c;实现了电子化、信息化、智能化巡检&#xff0c;可以提高巡检的工作效率和应急抢险水平。 森林防火 无人机搭载红外光电系统能在森林高空进行全天候监…