学习笔记,仅供参考,有错必纠


限制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请求次数相关推荐

  1. php限制ip访问次数 并发_nginx限制ip请求次数 以及并发次数

    如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见 ...

  2. Django(part42)--跨站请求伪造

    学习笔记,仅供参考,有错必纠 文章目录 中间件Middleware 跨站请求伪造 防护方案 举个例子 中间件Middleware 跨站请求伪造 跨站请求伪造攻击 某些恶意网站上包含链接.表单按钮或者J ...

  3. php 同一ip请求次数,限定时间内同一ip只能访问一次

    限定时间内同一ip只能访问一次 建立一个数据表 CREATE TABLE `clicks` ( `ip` INT UNSIGNED NOT NULL , `time1` INT UNSIGNED NO ...

  4. 限制ip在一定时间内的请求次数

    //规定的时间限制请求次数$num = 10;$time = 60;$error_ip_num_ = Cache::get('ip_num_'.$request->ip(),0);if(!$er ...

  5. 限制同一IP访问次数,csrf,分页,Paginator,内建用户系统,文件上传,上传到本地

    中间件的使用 限制同一IP访问次数 1.获取远程客户端的IP地址 request.META['REMOTE_ADDR'] 2.得到客户端访问的请求路由信息 request.path_info 创建一个 ...

  6. linux日志生成速率统计,Linux学习29-awk提取log日志信息,统计日志里面ip访问次数排序...

    前言 有一段log日志,需从日志里面分析,统计IP访问次数排序前10名,查看是否有异常攻击. 日志提取 如下日志,这段日志包含的信息内容较多,我们希望提取ip,访问时间,请求方式,访问路径(不带参数) ...

  7. SpringBoot后端统计网站的IP访问次数及地区

    项目是用SpringBoot+Vue实现,前后端分离的,前端是用nginx部署的,虽说可以通过Nginx的日志来统计网站的IP的访问次数,但想在前端用图形化的方式来展示是不太可行的,所以我想着是在Sp ...

  8. LeetCode简单题之最近的请求次数

    题目 写一个 RecentCounter 类来计算特定时间范围内最近的请求. 请你实现 RecentCounter 类: RecentCounter() 初始化计数器,请求数为 0 . int pin ...

  9. 降低http请求次数

    80%的终于用户响应时间花在前端程序上.而其大部分时间则花在各种页面元素,如图像.样式表.脚本和Flash等的下载上. 降低页面元素将会降低HTTP请求次数.这是高速显示页面的关键所在. 1.Imag ...

最新文章

  1. 程序员的“认知失调”
  2. Spring源码版本命名规则及下载安装(下)笔记
  3. 使用MyBatista----上传图像
  4. mats测试所有显存命令_RGBLCD液晶屏层叠显示测试
  5. eclipse中将java项目变成web项目
  6. 使用国内源来安装pytorch(速度很快)
  7. Perl脚本的调试方法
  8. 啊哈算法(python)
  9. 域名抢注代码_如何停止域名抢注攻击
  10. LA 5713 Qin Shi Huang's National Road System 最小生成树
  11. 编程语言的宗教狂热和十字军东征 (转)
  12. 360怎样修改wifi服务器地址,360路由器怎么重新设置?
  13. Electron 自定义托盘实战——桌面计算器
  14. 安装python与编译工具vs code(中文版)和pycharm(中文版)
  15. 完全支持双层PDF!开源的PDF分离与合并软件,C#版本(转自codeproject)
  16. 奔涌吧 后浪!!! 哔哩哔哩 何冰
  17. 火狐浏览器滚动条样式修改 css
  18. CDISC SDTM IE domain学习笔记
  19. 免费的图片服务器https://sm.ms
  20. DC-9靶机渗透测试详细教程

热门文章

  1. virtualenv在windows10下面使用的注意事项
  2. 机器学习:正负样本数据量不平衡处理方法
  3. EfficientNet论文阅读笔记
  4. 【机器学习】线性回归之概率解释及局部加权线性回归
  5. vue 通过绑定事件获取当前行的id
  6. day9-继承式多线程
  7. JSF JQUERY 使用datepicker
  8. 数据中心两种常用流量模型运用mininet的实现
  9. BZOJ2459 : [BeiJing2011]神秘好人
  10. 设计模式--责任链模式(COR)