基于中间件访问频率限制 每分钟时间间隔最多访问3次

同一个IP 1分钟时间间隔只能访问三次

1. 拿到用户请求的IP
2. 当前请求的时间
3. 记录访问的历史
VISIT_RECORD ={
    ‘ip‘:[]
}
class Throttle(MiddlewareMixin):
    def process_request(self,request):
        # print(request.META)通过这个可以拿到ip
        ip = request.META.get(‘REMOTE_ADDR‘)
        now = time.time()
        if ip not in VISIT_RECORD:
            VISIT_RECORD[ip] = []
        history = VISIT_RECORD[ip]
        while history and now - history[-1] >60:
            history.pop()
        if len(history) >= 3:
            return HttpResponse(‘您的访问次数超出限制!请在一分钟之后再次访问!!!‘)
        history.insert(0,now)

原文地址:https://www.cnblogs.com/hnlmy/p/10632521.html

时间: 2024-10-06 03:01:23

基于中间件访问频率限制 每分钟时间间隔最多访问3次的相关文章

nginx lua redis 访问频率限制(转)

1. 需求分析 Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的需求. Nginx处理请求的过程一共划分为11个阶段,分别是: post-read.server-rewrite.find-config.rewrite.post-rewrite. preaccess.access.post-access.try-files.content.log. 在openre

轻型的接口访问频率限制服务模型的设计与实现【转】

原文地址:http://www.iam3y.com/html/878.html 最近需要设计open api的接口频次控制相关实现,便查阅相关文档. 接口频次控制主要包括两方面: (1)业务ID对某一个接口某时间间隔(如一分钟)内访问的次数 限制 (2)业务ID在某个时间周期(如一天)内访问的次数 限制 对于存储并进行频次计数的服务来说,要具备以下的特点: (1)自更新能力,在某个约定的时间点对所有的node(节点)进行自更新操作,也就是常说的出厂设置 (2)协议轻型能力,协议必须尽可能简单,才

Django Restful Framework【第三篇】认证、权限、限制访问频率

一.认证 认证请求头 views.py #!/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.authentication import BaseAuthentication from rest_framework.permissions import

Django rest framework 限制访问频率(源码分析三)

基于 当用发出请求时 首先执行dispatch函数,当执行当第二部时: #2.处理版本信息 处理认证信息 处理权限信息 对用户的访问频率进行限制 self.initial(request, *args, **kwargs) 进入到initial方法: def initial(self, request, *args, **kwargs): """ Runs anything that needs to occur prior to calling the method han

REST framework (组件使用之认证、权限、访问频率)

目录 一.认证 二.权限 三.限制访问频率 四.总结 一.认证(补充的一个点) 认证请求头 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 from rest_framework.views import APIView 4 from rest_framework.response import Response 5 from rest_framework.authentication import BaseAuthentication 6

cache 访问频率的思考

互联网的项目用户基数很大,有时候瞬间并发量非常大,这个时候对于数据访问来说是个灾难.为了应对这种场景,一般都会大量采用web服务器集群,缓存集群.采用集群后基本上就能解决大量并发的数据访问.当然这个时候内网的网速会成为缓存速度的瓶颈. 当然我们希望能有更好的缓存结构,比如一级缓存和二级缓存.一级缓存直接缓存在宿主主机内存上,二级缓存缓存在redis集群上,如果一个缓存实例被访问的频率非常高,我们希望这个缓存实例能缓存在宿主主机内存上,如果一个实例的访问频率非常低,我们甚至可能不会为此实例进行缓存

ASP.NET网站限制访问频率

最近做了一个免费发短信的小网站(http://freesms.cloudapp.net/),但发现最近有人破解了我的验证码,以每3秒/条的速度用我的短信服务来发他的广告.更换验证码程序和过滤关键字只是治标不治本的方法,为了彻底阻止此类事件的发生,我们还是来看一下怎样通过优化程序来实现. 其实同样的程序除了防止别人滥发请求以外,还对预防拒绝服务(DoS)攻击同样适用哦.不妨来看看. 基本目标:限制同一IP访问网站的频率.比如,我们限制为每240分钟来自同一IP的用户最多只能够访问首页40次.其他页

rest_framework组件之认证,权限,访问频率

共用的models 1 from django.db import models 2 3 4 # Create your models here. 5 6 7 class User(models.Model): 8 username = models.CharField(max_length=32) 9 password = models.CharField(max_length=32) 10 user_type = models.IntegerField(choices=((1, '超级用户'

限流(访问频率)组件的使用

目录 限流(访问频率)组件的使用 限流(访问频率)组件的使用 框架中限流功能的实现依赖于封装好的限流类,设置方式上分为全局设置和局部设置.继承类设置和自定义类设置.如果要实现限流功能则必须设置DEAFULRT_THROTTLE_CLASSES和DEAFULRT_THROTTLE_RATES 自定义限流类 限流类的基本思路: 限流需要知道访问者的本地IP地址,通过地址才能进行记录访问次数: 限流需要了解访问者访问的时间,通过记录时间和次数来限制规定时间内访问者可以访问的频次: 拿到IP地址后,创建