為了防止爬蟲以及惡意請求,我們適當的為API增加一個請求限制 WebApiThrottle限流框架
WebApiThrottle支持自定義配置各種限流策略。可以根據不同場景配置多個不同的限制,比如授權某個IP每秒、每分鍾、每小時、每天、每周的最大調用次數。 這些限制策略可以配置在所有請求上,也可以單獨給每個API接口去配置。
--十色鹿
本文不再過多講解理論,你們可以看看這兩位大佬文章,都解釋很詳細了(鏈接在底部)
API 還是使用上次的 如果沒新建,請看 -> https://www.cnblogs.com/whatarey/p/11438243.html
第一步 NuGet WebApiThrottle
第二步 WebApiConfig.cs 配置

1 #region web api 接口請求限制~~1 2 ///// web api 接口請求限制~~ 3 //config.Filters.Add(new ThrottlingHandler() 4 //{ 5 // Policy = new ThrottlePolicy() 6 // { 7 8 // //ip配置區域 9 // IpThrottling = true, 10 // ClientThrottling = true, 11 12 // //端點限制策略配置會從EnableThrottling特性中獲取。 13 // EndpointThrottling = true 14 15 // } 16 //}); 17 #endregion 18 19 #region Web Api 接口請求限制 2 20 21 //WebApiConfig 增加 22 config.MessageHandlers.Add(new ThrottlingHandler() 23 { 24 Policy = new ThrottlePolicy( 25 perSecond: 5 //可選參數 每秒限制次數 26 , perMinute: 20 //可選參數 每分鍾限制次數 27 , perHour: 200 //可選參數 每小時限制次數 28 , perDay: 1500 //可選參數 每天限制次數 29 , perWeek: 3000 //可選參數 每周限制次數 30 ) 31 { 32 IpThrottling = true, //該值指示是否啟用IP限制 33 ClientThrottling = true //該值指示是否啟用客戶端限制 34 }, 35 Repository = new CacheRepository(), //獲取或設置限制度量存儲。 36 //QuotaExceededMessage = JsonConvert.SerializeObject(json.msg), 37 QuotaExceededContent = (l, obj) => //違反限流事件 38 { //API calls quota exceeded! maximum admitted {0} per {1} 39 40 var json = new {message = $"系統檢測您當前操作非人類,{l}/{obj}" }; 41 return (json); 42 } 43 }); 44 #endregion
第三步:測試
https://www.cnblogs.com/fger/p/11119566.html --有關WebApiThrottle 可查看此篇文章
https://www.cnblogs.com/SzeCheng/p/5407316.html --有關WebApiThrottle 可查看此篇文章
End