反爬(使用middleware中间件来限制IP频率)

xiaoxiao2025-08-18  52

中间件middleware里:

import time from django.utils.deprecation import MiddlewareMixin MAX_REQUEST_PER_SECOND=2 #每秒访问次数

class RequestBlockingMiddleware(MiddlewareMixin):     def process_request(self,request):         now=time.time()         request_queue = request.session.get('request_queue',[])         if len(request_queue) < MAX_REQUEST_PER_SECOND:             request_queue.append(now)             request.session['request_queue']=request_queue         else:             time0=request_queue[0]             if (now-time0)<1:                 time.sleep(5)             request_queue.append(time.time())             request.session['request_queue']=request_queue[1:]

#启用RequestBlocking中间件 IDDLEWARE = [     'django.middleware.security.SecurityMiddleware',     'django.contrib.sessions.middleware.SessionMiddleware',     'django.middleware.common.CommonMiddleware',     'django.middleware.csrf.CsrfViewMiddleware',     'app.middleware.RequestBlockingMiddleware', #在sessions之后,auth之前     'django.contrib.auth.middleware.AuthenticationMiddleware',     'django.contrib.messages.middleware.MessageMiddleware',     'django.middleware.clickjacking.XFrameOptionsMiddleware', ]

转载请注明原文地址: https://www.6miu.com/read-5035024.html

最新回复(0)