站点IP访问频率限制 针对单个站点
using System; using System.Collections.Generic; using System.IO; //using System.Linq; using System.Web; // <summary> // IP访问频率控制 // </summary> public static class IPCacheManager { /// <summary> /// IP缓存集合 /// </summary> private static List<IPCacheInfo> dataList = new List<IPCacheInfo>(); private static object lockObj = new object(); /// <summary> /// 一段时间内,最大请求次数,必须大于等于1 /// </summary> private static int maxTimes = 3; /// <summary> /// 一段时间长度(单位秒),必须大于等于1 /// </summary> private static int partSecond = 30; /// <summary> /// 请求被拒绝是否加入请求次数 /// </summary> private static bool isFailAddIn = false; static IPCacheManager() { } /// <summary> /// 设置时间,默认maxTimes=3, partSecond=30 /// </summary> /// <param name="_maxTimes">最大请求次数</param> /// <param name="_partSecond">请求单位时间</param> public static void SetTime(int _maxTimes, int _partSecond) { maxTimes = _maxTimes; partSecond = _partSecond; } /// <summary> /// 检测一段时间内,IP的请求次数是否可以继续请求 /// 和使用 /// </summary> /// <param name="ip"></param> /// <returns></returns> public static bool CheckIsAble(string ip) { lock (lockObj) { var item = dataList.Find(p => p.IP == ip); if (item == null) { item = new IPCacheInfo(); item.IP = ip; item.ReqTime.Add(DateTime.Now); dataList.Add(item); return true; } else { if (item.ReqTime.Count > maxTimes) { item.ReqTime.RemoveAt(0); } var nowTime = DateTime.Now; if (isFailAddIn) { #region 请求被拒绝也需要加入当次请求 item.ReqTime.Add(nowTime); if (item.ReqTime.Count >= maxTimes) { if (item.ReqTime[0].AddSeconds(partSecond) > nowTime) { return false; } else { return true; } } else { return true; } #endregion } else { #region 请求被拒绝就不需要加入当次请求了 if (item.ReqTime.Count >= maxTimes) { if (item.ReqTime[0].AddSeconds(partSecond) > nowTime) { return false; } else { item.ReqTime.Add(nowTime); return true; } } else { item.ReqTime.Add(nowTime); return true; } #endregion } } } } } public class IPCacheInfo { public string IP { get; set; } private List<DateTime> reqTime = new List<DateTime>(); public List<DateTime> ReqTime { get { return this.reqTime; } set { this.reqTime = value; } } }
以上这篇C# 站点IP访问频率限制 针对单个站点的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍PHP实现限制IP访问的方法,包括了PHP实现限制IP访问的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现限制IP访问的方法。分享给大家供大家参考,具体如下: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP网络编程技巧总结》、《php正则表达式用法总结》、《php curl用法总结》、《PHP数组(Array)操作技巧大全》、《php字符串(str
使用OpenSUSE v15.2, Apache. 使用zypper安装了PHP-FPM。遵循本网站上的说明:https://en.opensuse.org/SDB:Apache_FastCGI_and_PHP-FPM_配置 我重新启动了Apache和PHP-FPM。但是,网站未加载到浏览器中。 我得到HTTP错误502。 #####################################
本文向大家介绍linux下统计appche站点IP访问量的shell脚本,包括了linux下统计appche站点IP访问量的shell脚本的使用技巧和注意事项,需要的朋友参考一下 经常需要根据IP地址统计apache站点访问量,最基本的脚本. 根据IP访问量降序排列: 执行效果: 打印访问量前三的IP地址: 执行效果: apache站点访问错误统计: 执行效果:
本文向大家介绍Django 限制用户访问频率的中间件的实现,包括了Django 限制用户访问频率的中间件的实现的使用技巧和注意事项,需要的朋友参考一下 一、定义限制访问频率的中间件 common/middleware.py 二、将中间件加入配置文件 setting.py 对使用 rest_framework 框架的项目来说,可以使用框架的设置来对api的访问频率进行限制 以上就是本文的全部内容,希
本文向大家介绍asp.net实现拒绝频繁的IP访问的方法,包括了asp.net实现拒绝频繁的IP访问的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了asp.net实现拒绝频繁的IP访问的方法。分享给大家供大家参考,具体如下: 首先我们要实现 IHttpModule接口 ListIp 类 在web.config 配置访问规则 更多关于asp.net相关内容感兴趣的读者可查看本站专题:《
1. 创建站点 一般情况下,您需要在百度统计中创建站点才能获取跟踪代码及查看网站数据。 具体创建步骤: 登录百度统计,选择“管理->网站列表”标签; 点击页面右上方“新增网站”按钮,弹出新建对话框: 输入网站域名,域名格式不正确,将无法创建。 可输入如下4种域名形式: 主域名(如:www.baidu.com) 二级域名(如:sub.baidu.com) 子目录(如:www.baidu.com/su