限制ip访问频率

import time
from django.utils.deprecation import MiddlewareMixin
from django.http.response import HttpResponse
from django.core.cache import caches# 频率限制访问
class IpLimitMiddleware(MiddlewareMixin):def process_request(self,request):ip = request.META.get("REMOTE_ADDR")# 选择缓存的数据库 redis缓存cache = caches['redis_backend']# 首先缓存中,根据ip获取数据,假如没有数据,值为空列表 []requests = cache.get(ip,[])# 如果值存在,且当前时间 - 最后一个时间 > 30 则清洗掉这个值  这里我们插入请求的时间为头插while requests and time.time() -  requests[-1] > 30:requests.pop()# 若没有存在值,则添加,过期时间为30秒,这个过期时间与上面判断的30 保持一致requests.insert(0, time.time())cache.set(ip, requests, timeout=30)# 限制访问次数为 5 次print(len(requests))if len(requests) > 5:return HttpResponse("请求过于频繁,请稍后重试!")

黑名单

import time
from django.utils.deprecation import MiddlewareMixin
from django.http.response import HttpResponse
from django.core.cache import caches# 频率限制访问
class IpLimitMiddleware(MiddlewareMixin):def process_request(self,request):ip = request.META.get("REMOTE_ADDR")# 选择缓存的数据库 redis缓存cache = caches['redis_backend']# 获取黑名单black_list = cache.get('black',[])if ip in black_list:return HttpResponse("黑名单用户!")requests = cache.get(ip,[])# 如果值存在,且当前时间 - 最后一个时间 > 30 则清洗掉这个值  这里我们插入请求的时间为头插while requests and time.time() -  requests[-1] > 60:requests.pop()# 若没有存在值,则添加,过期时间为30秒,这个过期时间与上面判断的30 保持一致requests.insert(0, time.time())cache.set(ip, requests, timeout=60)# 如果访问次数大于30次,假如黑名单,封2分钟if len(requests) > 30:black_list.append(ip)cache.set('black',black_list,timeout=60*2)# 限制访问次数为 5 次print(len(requests))if len(requests) > 5:return HttpResponse("请求过于频繁,请稍后重试!")

Django 中间件之限制ip访问次数 和 黑名单相关推荐

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

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

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

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

  3. 用户IP访问次数统计

    技术源于生活,服务生活 线上地址:https://api.imibi.cn Redis存储 1.使用Redis的0号数据库,数据格式是hash. import redis con = redis.Re ...

  4. python读取日志统计ip_使用python脚本实现统计日志文件中的ip访问次数

    使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...

  5. php限制ip访问次数 并发_[转]nginx限制某个IP同一时间段的访问次数

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

  6. 统计日志中ip访问次数并排序的三种方法

    1  利用linux中的awk命令 grep "GET aaa.log | awk -F " " '{print $NF}' >d:/test.log 假设日志的最 ...

  7. linux 访问日志ip排序,Linux通过日志文件统计IP访问次数排序

    假设我的日志文件内容如下: 218.92.217.53 - - [22/Nov/2017:17:26:27 +0800] "GET /images/rand HTTP/1.0" 2 ...

  8. ip访问次数统计 nginx_Linux分析Nginx日志统计IP访问次数的shell脚本

    平时运维遇到最多的就是nginx的日志分析了,要时常做系统监控,检查IP的访问次数是否有异常,防止恶意访问. 假设我的nginx日志如下: ....... 211.253.43.23 - - [03/ ...

  9. php限制ip访问次数 并发_PHP实现redis限制单ip、单用户的访问次数功能示例

    本文实例讲述了PHP实现redis限制单ip.单用户的访问次数功能.分享给大家供大家参考,具体如下: 有时候我们需要限制一个api或页面访问的频率,例如单ip或单用户一分钟之内只能访问多少次 类似于这 ...

最新文章

  1. OpenCV copyTo() 函数实现图片交集
  2. 运筹学两阶段法编程c语言,运筹学上机实验 - 单纯形方法的两阶段法
  3. 《为自己工作——世界顶级设计师成功法则》—第1章1.7节平衡
  4. 经典C语言程序100例之六六
  5. vue3与vue2的详细区别
  6. Python3 标准库及相关内容
  7. IBM收购数据库安全公司 围剿Oracle之心不死
  8. 买了社保,再买农村医保是不是多余?
  9. 在线OPML美化格式化工具
  10. 关于内容管理系统IWMS的几个问题
  11. 2022 数学建模B题成品论文 参考文章 含全部建模 步骤 数学模型 图像
  12. 虚拟机实验Windows10备份和还原
  13. Navicat获取注册码
  14. BMP(DIB)图片格式
  15. 差分编码解析以及FPGA实现
  16. ise 检查文件语法错误
  17. JavaScript document对象
  18. Kanzi入门学习(一)
  19. dnf命令 (常用总结)
  20. 怎么画思维导图?玩转MindNow六大思维结构

热门文章

  1. 解线性方程组的直接法
  2. 思科模拟器——RIP协议
  3. 遇到问题---tomcat启动报错--startup failed due to previous errors
  4. matlab画图中该如何标注途中的某一点,以SIR模型为例
  5. //12、设计人民币类,其数据成员为fen(分)、jiao(角)、yuan(元)。重载这个类的加法、减法运算符,并给出主函数应用该类。
  6. 基于JavaWeb的个人空间个人网站个人博客系统设计与实现
  7. Macbook非常好用的一些功能
  8. 一个项目经理必备的素质
  9. c#和python更适合爬虫_Python2和Python3哪个更适合初学者学习来爬虫
  10. Java程序员兼职平台推荐