• WebApi 接口恶意请求限制


    为了防止爬虫以及恶意请求,我们适当的为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
    View Code

     第三步:测试

     

     

     

    https://www.cnblogs.com/fger/p/11119566.html  --有关WebApiThrottle  可查看此篇文章

    https://www.cnblogs.com/SzeCheng/p/5407316.html  --有关WebApiThrottle  可查看此篇文章

    End

  • 相关阅读:
    VS2010 VC Project的default Include设置
    Linux 下的编辑/编译器
    用命令实现Win7远程桌面关机和重启
    怎样快速刪除Word中超链接?
    chrome浏览器世界之窗浏览器的收藏夹在哪?
    代码量查找工具[最好用的]
    C项目实践--网络协议和套接字编程
    memmove 和 memcopy
    bzoj2456: mode
    bzoj1205: [HNOI2005]星际贸易
  • 原文地址:https://www.cnblogs.com/whatarey/p/11722028.html
Copyright © 2020-2023  润新知