zoukankan      html  css  js  c++  java
  • 中间件:一个用户1分钟访问不能超过3次


    #导入模块
    from django.utils.deprecation import MiddlewareMixin

    # 定义一个 访问记录的大字典
    VISIT_RECORD = {}
     
    # 自定义一个访问频率限制的中间件
    class Throttle(MiddlewareMixin):
     
        def process_request(self, request):
            # 1. 拿到用户请求的IP
            # print(request.META)
            ip = request.META.get("REMOTE_ADDR")
            
            # 2. 当前请求的时间
            now = time.time()
            
            # 3. 记录访问的历史
            if ip not in VISIT_RECORD:
                VISIT_RECORD[ip] = []
     
            history = VISIT_RECORD[ip]
            # [11:07:20, 10:07:11, 10:07:06, 10:07:01]
     
            #当本次访问与之前的访问超过60s,则清除之前的访问记录
            while history and now - history[-1] > 10:
                history.pop()
           
             # 判断用户在一分钟的时间间隔内是否访问超过3次
            if len(history) >= 3:
                return HttpResponse("访问过于频繁...")
            
      #把新的访问记录添加在列表的第一个
            history.insert(0, now)
  • 相关阅读:
    screenonclick类
    凶残
    接近毁灭的状态
    在python3中,items()进行了优化
    python中两个字典(dict)合并
    Python代码中os.path常见属性的相关介绍 from 路人甲
    什么是pyc文件
    wget
    Python的字典的items(), keys(), values()
    利用securecrt在linux与windows之间传输文件
  • 原文地址:https://www.cnblogs.com/nzd123456/p/9459537.html
Copyright © 2011-2022 走看看