博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET 查询客户端请求IP地址
阅读量:7080 次
发布时间:2019-06-28

本文共 7107 字,大约阅读时间需要 23 分钟。

public class CheckIP     {         #region 获取浏览器版本号           ///          /// 获取浏览器版本号         ///          /// 
         public static string GetBrowser()         {             HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;             return bc.Browser + bc.Version;         }          #endregion          #region 获取操作系统版本号           ///          /// 获取操作系统版本号         ///          /// 
         public static string GetOSVersion()         {             //UserAgent              var userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];               var osVersion = "未知";               if (userAgent.Contains("NT 6.1"))             {                 osVersion = "Windows 7";             }             else if (userAgent.Contains("NT 6.0"))             {                 osVersion = "Windows Vista/Server 2008";             }             else if (userAgent.Contains("NT 5.2"))             {                 osVersion = "Windows Server 2003";             }             else if (userAgent.Contains("NT 5.1"))             {                 osVersion = "Windows XP";             }             else if (userAgent.Contains("NT 5"))             {                 osVersion = "Windows 2000";             }             else if (userAgent.Contains("NT 4"))             {                 osVersion = "Windows NT4";             }             else if (userAgent.Contains("Me"))             {                 osVersion = "Windows Me";             }             else if (userAgent.Contains("98"))             {                 osVersion = "Windows 98";             }             else if (userAgent.Contains("95"))             {                 osVersion = "Windows 95";             }             else if (userAgent.Contains("Mac"))             {                 osVersion = "Mac";             }             else if (userAgent.Contains("Unix"))             {                 osVersion = "UNIX";             }             else if (userAgent.Contains("Linux"))             {                 osVersion = "Linux";             }             else if (userAgent.Contains("SunOS"))             {                 osVersion = "SunOS";             }             return osVersion;         }         #endregion          #region 获取客户端IP地址           ///          /// 获取客户端IP地址         ///          /// 
         public static string GetIP()         {             string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];             if (string.IsNullOrEmpty(result))             {                 result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];             }             if (string.IsNullOrEmpty(result))             {                 result = HttpContext.Current.Request.UserHostAddress;             }             if (string.IsNullOrEmpty(result))             {                 return "0.0.0.0";             }             return result;         }          #endregion          #region 取客户端真实IP           ///             ///  取得客户端真实IP。如果有代理则取第一个非内网地址           ///             public static string GetIPAddress         {             get             {                 var result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];                 if (!string.IsNullOrEmpty(result))                 {                     //可能有代理                       if (result.IndexOf(".") == -1)        //没有“.”肯定是非IPv4格式                           result = null;                     else                     {                         if (result.IndexOf(",") != -1)                         {                             //有“,”,估计多个代理。取第一个不是内网的IP。                               result = result.Replace("  ", "").Replace("'", "");                             string[] temparyip = result.Split(",;".ToCharArray());                             for (int i = 0; i < temparyip.Length; i++)                             {                                 if (IsIPAddress(temparyip[i])                                         && temparyip[i].Substring(0, 3) != "10."                                         && temparyip[i].Substring(0, 7) != "192.168"                                         && temparyip[i].Substring(0, 7) != "172.16.")                                 {                                     return temparyip[i];        //找到不是内网的地址                                   }                             }                         }                         else if (IsIPAddress(result))  //代理即是IP格式                               return result;                         else                             result = null;        //代理中的内容  非IP,取IP                       }                   }                   string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty) ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] : HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"];                   if (string.IsNullOrEmpty(result))                     result = HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"];                   if (string.IsNullOrEmpty(result))                     result = HttpContext.Current.Request.UserHostAddress;                   return result;             }         }          #endregion          #region  判断是否是IP格式           ///           ///  判断是否是IP地址格式  0.0.0.0         ///           ///  
待判断的IP地址         ///  
true  or  false
         public static bool IsIPAddress(string str1)         {             if (string.IsNullOrEmpty(str1) || str1.Length < 7 || str1.Length > 15) return false;               const string regFormat = @"^d{1,3}[.]d{1,3}[.]d{1,3}[.]d{1,3}$";               var regex = new Regex(regFormat, RegexOptions.IgnoreCase);             return regex.IsMatch(str1);         }          #endregion          #region 获取公网IP         /// 
         /// 获取公网IP         ///          /// 
         public static string GetNetIP()         {             string tempIP = "";             try             {                 System.Net.WebRequest wr = System.Net.WebRequest.Create("http://city.ip138.com/ip2city.asp");                 System.IO.Stream s = wr.GetResponse().GetResponseStream();                 System.IO.StreamReader sr = new System.IO.StreamReader(s, System.Text.Encoding.GetEncoding("gb2312"));                 string all = sr.ReadToEnd(); //读取网站的数据                   int start = all.IndexOf("[") + 1;                 int end = all.IndexOf("]", start);                 tempIP = all.Substring(start, end - start);                 sr.Close();                 s.Close();             }             catch             {                 if (System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.Length > 1)                     tempIP = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList[1].ToString();                 if (string.IsNullOrEmpty(tempIP))                     return GetIP();             }             return tempIP;         }         #endregion     }

 

转载地址:http://lkvml.baihongyu.com/

你可能感兴趣的文章
Java JTable视图窗口滚动并定位到某一行
查看>>
课堂练习
查看>>
HTML学习成果 制作一个空白简历
查看>>
使用mybatis自带工具,自动生成表对应domain、mapper.xml以及dao
查看>>
餐饮ERP相关问题FAQ
查看>>
基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多
查看>>
Matrix Computations 1
查看>>
springboot上传代码到gitlab并发布上线操作
查看>>
FILE * fopen(const char * path,const char * mode);
查看>>
[Flask]sqlalchemy使用count()函数遇到的问题
查看>>
[python](Docker SDK)上传镜像到私有仓库(tls、身份认证)
查看>>
听说是阿里笔试题
查看>>
使用pm2管理nodejs应用
查看>>
MySQL基础之---mysqlimport工具和LOAD DATA命令导入文本文件
查看>>
php 读取文件头部两个字节 判断文件的实际类型
查看>>
异或交换真的比开一个tmp快吗?
查看>>
使用sea.js管理你项目js文件
查看>>
windows device driver 小结感想
查看>>
SQLServer获取临时表列名并判断指定列名是否存在
查看>>
4827 妹子[快速乘法]
查看>>