/// <summary> /// 获取国内IP地址 /// </summary> /// <returns></returns> public static string GetRandomChinaIP() { string ip = AppRequest.GetRandomIP("182.128.0.0", "182.143.255.255"); string address = AppRequest.GetAdrByChinaIp(ip); if (!address.Contains("中国")) { return(GetRandomChinaIP()); } return(ip); }
/// <summary> /// 检测一段时间内,IP的请求次数是否可以继续请求 /// 和使用 /// </summary> /// <param name="ip"></param> /// <returns></returns> public static bool CheckIsAble() { string ip = AppRequest.GetIP(); 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 } } } }