日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django(part42)--限制IP请求次数

發布時間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django(part42)--限制IP请求次数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考,有錯必糾


限制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请求次数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。