Django(part42)--限制IP请求次数
学习笔记,仅供参考,有错必纠
限制IP请求次数
这个Blog中,我们将使用中间件,实现强制某个IP地址只能向某个地址发送3次GET请求。
在做这个案例之前我们需要先学两个request的属性:
request.META['REMOTE_ADDR']
,得到远程客户端的IP地址request.path_info
,得到客户端GET请求的路由信息
现在,我们在主urls.py中创建路由:
urlpatterns = [re_path(r'^admin/', admin.site.urls),re_path(r'^testlimit/$',views.test_limit),
]
在主视图模块中增加视图函数:
def test_limit(request):return HttpResponse("我是测试页面... ...")
创建自动以中间键:
class VisitLimit(MiddlewareMixin):'''此中间件限制一个IP地址对应的访问/testlimit/的次数不能改过3次,超过后禁止使用'''visit_times = {} # 此字典用于记录客户端IP地址有访问次数def process_request(self, request):ip_address = request.META['REMOTE_ADDR'] # 得到IP地址if not re.match('^/testlimit/$', request.path_info):return None#继续请求times = self.visit_times.get(ip_address, 0)print("IP:", ip_address, '已经访问过', times, '次!:', request.path_info)self.visit_times[ip_address] = times + 1if times < 3:return Nonereturn HttpResponse('你已经访问过' + str(times) + '次,禁止再次访问!')
将我们刚创建的中间键进行注册:
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',# 'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','mymiddleware.checklogin.MyMiddleWare','mymiddleware.checklogin.VisitLimit',
]
向http://127.0.0.1:8000/testlimit/发起请求:
查看cmd界面:
IP: 127.0.0.1 已经访问过 0 次!: /testlimit/
[24/Jun/2020 01:28:57] "GET /testlimit/ HTTP/1.1" 200 25
再访问2次http://127.0.0.1:8000/testlimit/,并查看cmd界面:
IP: 127.0.0.1 已经访问过 1 次!: /testlimit/
[24/Jun/2020 01:30:40] "GET /testlimit/ HTTP/1.1" 200 25
IP: 127.0.0.1 已经访问过 2 次!: /testlimit/
[24/Jun/2020 01:30:53] "GET /testlimit/ HTTP/1.1" 200 25
当我们第4次向http://127.0.0.1:8000/testlimit/发起请求时,出现如下页面:
再查看cmd界面:
IP: 127.0.0.1 已经访问过 3 次!: /testlimit/
[24/Jun/2020 01:31:35] "GET /testlimit/ HTTP/1.1" 200 46
Django(part42)--限制IP请求次数相关推荐
- php限制ip访问次数 并发_nginx限制ip请求次数 以及并发次数
如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见 ...
- Django(part42)--跨站请求伪造
学习笔记,仅供参考,有错必纠 文章目录 中间件Middleware 跨站请求伪造 防护方案 举个例子 中间件Middleware 跨站请求伪造 跨站请求伪造攻击 某些恶意网站上包含链接.表单按钮或者J ...
- php 同一ip请求次数,限定时间内同一ip只能访问一次
限定时间内同一ip只能访问一次 建立一个数据表 CREATE TABLE `clicks` ( `ip` INT UNSIGNED NOT NULL , `time1` INT UNSIGNED NO ...
- 限制ip在一定时间内的请求次数
//规定的时间限制请求次数$num = 10;$time = 60;$error_ip_num_ = Cache::get('ip_num_'.$request->ip(),0);if(!$er ...
- 限制同一IP访问次数,csrf,分页,Paginator,内建用户系统,文件上传,上传到本地
中间件的使用 限制同一IP访问次数 1.获取远程客户端的IP地址 request.META['REMOTE_ADDR'] 2.得到客户端访问的请求路由信息 request.path_info 创建一个 ...
- linux日志生成速率统计,Linux学习29-awk提取log日志信息,统计日志里面ip访问次数排序...
前言 有一段log日志,需从日志里面分析,统计IP访问次数排序前10名,查看是否有异常攻击. 日志提取 如下日志,这段日志包含的信息内容较多,我们希望提取ip,访问时间,请求方式,访问路径(不带参数) ...
- SpringBoot后端统计网站的IP访问次数及地区
项目是用SpringBoot+Vue实现,前后端分离的,前端是用nginx部署的,虽说可以通过Nginx的日志来统计网站的IP的访问次数,但想在前端用图形化的方式来展示是不太可行的,所以我想着是在Sp ...
- LeetCode简单题之最近的请求次数
题目 写一个 RecentCounter 类来计算特定时间范围内最近的请求. 请你实现 RecentCounter 类: RecentCounter() 初始化计数器,请求数为 0 . int pin ...
- 降低http请求次数
80%的终于用户响应时间花在前端程序上.而其大部分时间则花在各种页面元素,如图像.样式表.脚本和Flash等的下载上. 降低页面元素将会降低HTTP请求次数.这是高速显示页面的关键所在. 1.Imag ...
最新文章
- 程序员的“认知失调”
- Spring源码版本命名规则及下载安装(下)笔记
- 使用MyBatista----上传图像
- mats测试所有显存命令_RGBLCD液晶屏层叠显示测试
- eclipse中将java项目变成web项目
- 使用国内源来安装pytorch(速度很快)
- Perl脚本的调试方法
- 啊哈算法(python)
- 域名抢注代码_如何停止域名抢注攻击
- LA 5713 Qin Shi Huang's National Road System 最小生成树
- 编程语言的宗教狂热和十字军东征 (转)
- 360怎样修改wifi服务器地址,360路由器怎么重新设置?
- Electron 自定义托盘实战——桌面计算器
- 安装python与编译工具vs code(中文版)和pycharm(中文版)
- 完全支持双层PDF!开源的PDF分离与合并软件,C#版本(转自codeproject)
- 奔涌吧 后浪!!! 哔哩哔哩 何冰
- 火狐浏览器滚动条样式修改 css
- CDISC SDTM IE domain学习笔记
- 免费的图片服务器https://sm.ms
- DC-9靶机渗透测试详细教程