.Net后台获取客户端信息

1.获取浏览器版本号

1 /// <summary>
2         /// 获取浏览器版本号
3         /// </summary>
4         /// <returns></returns>
5         public static string GetBrowser()
6         {
7             HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;
8             return bc.Browser + bc.Version;
9         }

 

2.获取操作系统版本号

 1 /// <summary>
 2         /// 获取操作系统版本号
 3         /// </summary>
 4         /// <returns></returns>
 5         public static string GetOSVersion()
 6         {
 7             //UserAgent 
 8             var userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
 9 
10             var osVersion = "未知";
11 
12             if (userAgent.Contains("NT 6.1"))
13             {
14                 osVersion = "Windows 7";
15             }
16             else if (userAgent.Contains("NT 6.0"))
17             {
18                 osVersion = "Windows Vista/Server 2008";
19             }
20             else if (userAgent.Contains("NT 5.2"))
21             {
22                 osVersion = "Windows Server 2003";
23             }
24             else if (userAgent.Contains("NT 5.1"))
25             {
26                 osVersion = "Windows XP";
27             }
28             else if (userAgent.Contains("NT 5"))
29             {
30                 osVersion = "Windows 2000";
31             }
32             else if (userAgent.Contains("NT 4"))
33             {
34                 osVersion = "Windows NT4";
35             }
36             else if (userAgent.Contains("Me"))
37             {
38                 osVersion = "Windows Me";
39             }
40             else if (userAgent.Contains("98"))
41             {
42                 osVersion = "Windows 98";
43             }
44             else if (userAgent.Contains("95"))
45             {
46                 osVersion = "Windows 95";
47             }
48             else if (userAgent.Contains("Mac"))
49             {
50                 osVersion = "Mac";
51             }
52             else if (userAgent.Contains("Unix"))
53             {
54                 osVersion = "UNIX";
55             }
56             else if (userAgent.Contains("Linux"))
57             {
58                 osVersion = "Linux";
59             }
60             else if (userAgent.Contains("SunOS"))
61             {
62                 osVersion = "SunOS";
63             }
64             return osVersion;
65         }

 

3.获取客户端IP地址

 1 /// <summary>
 2         /// 获取客户端IP地址
 3         /// </summary>
 4         /// <returns></returns>
 5         public static string GetIP()
 6         {
 7             string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
 8             if (string.IsNullOrEmpty(result))
 9             {
10                 result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
11             }
12             if (string.IsNullOrEmpty(result))
13             {
14                 result = HttpContext.Current.Request.UserHostAddress;
15             }
16             if (string.IsNullOrEmpty(result))
17             {
18                 return "0.0.0.0";
19             }
20             return result;
21         }

 

4.取客户端真实IP

 1 ///  <summary>  
 2         ///  取得客户端真实IP。如果有代理则取第一个非内网地址  
 3         ///  </summary>  
 4         public static string GetIPAddress
 5         {
 6             get
 7             {
 8                 var result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
 9                 if (!string.IsNullOrEmpty(result))
10                 {
11                     //可能有代理  
12                     if (result.IndexOf(".") == -1)        //没有“.”肯定是非IPv4格式  
13                         result = null;
14                     else
15                     {
16                         if (result.IndexOf(",") != -1)
17                         {
18                             //有“,”,估计多个代理。取第一个不是内网的IP。  
19                             result = result.Replace("  ", "").Replace("'", "");
20                             string[] temparyip = result.Split(",;".ToCharArray());
21                             for (int i = 0; i < temparyip.Length; i++)
22                             {
23                                 if (IsIPAddress(temparyip[i])
24                                         && temparyip[i].Substring(0, 3) != "10."
25                                         && temparyip[i].Substring(0, 7) != "192.168"
26                                         && temparyip[i].Substring(0, 7) != "172.16.")
27                                 {
28                                     return temparyip[i];        //找到不是内网的地址  
29                                 }
30                             }
31                         }
32                         else if (IsIPAddress(result))  //代理即是IP格式  
33                             return result;
34                         else
35                             result = null;        //代理中的内容  非IP,取IP  
36                     }
37 
38                 }
39 
40                 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"];
41 
42                 if (string.IsNullOrEmpty(result))
43                     result = HttpContext.Current.Request.ServerVariables["HTTP_X_REAL_IP"];
44 
45                 if (string.IsNullOrEmpty(result))
46                     result = HttpContext.Current.Request.UserHostAddress;
47 
48                 return result;
49             }
50         }

 

5.判断是否是IP格式

 1 ///  <summary>
 2         ///  判断是否是IP地址格式  0.0.0.0
 3         ///  </summary>
 4         ///  <param  name="str1">待判断的IP地址</param>
 5         ///  <returns>true  or  false</returns>
 6         public static bool IsIPAddress(string str1)
 7         {
 8             if (string.IsNullOrEmpty(str1) || str1.Length < 7 || str1.Length > 15) return false;
 9 
10             const string regFormat = @"^d{1,3}[.]d{1,3}[.]d{1,3}[.]d{1,3}$";
11 
12             var regex = new Regex(regFormat, RegexOptions.IgnoreCase);
13             return regex.IsMatch(str1);
14         }

 

6.获取公网IP

 1 /// <summary>
 2         /// 获取公网IP
 3         /// </summary>
 4         /// <returns></returns>
 5         public static string GetNetIP()
 6         {
 7             string tempIP = "";
 8             try
 9             {
10                 System.Net.WebRequest wr = System.Net.WebRequest.Create("http://city.ip138.com/ip2city.asp");
11                 System.IO.Stream s = wr.GetResponse().GetResponseStream();
12                 System.IO.StreamReader sr = new System.IO.StreamReader(s, System.Text.Encoding.GetEncoding("gb2312"));
13                 string all = sr.ReadToEnd(); //读取网站的数据
14 
15                 int start = all.IndexOf("[") + 1;
16                 int end = all.IndexOf("]", start);
17                 tempIP = all.Substring(start, end - start);
18                 sr.Close();
19                 s.Close();
20             }
21             catch
22             {
23                 if (System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.Length > 1)
24                     tempIP = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList[1].ToString();
25                 if (string.IsNullOrEmpty(tempIP))
26                     return GetIP();
27             }
28             return tempIP;
29         }

 

posted @ 2019-04-29 11:27  Tiye529  阅读(404)  评论(0编辑  收藏  举报