400-998-9776转2 服务时间:周一至周日 9:00-23:00 注意:本站不提供境外服务本站不提供境外服务

返回

如何通过代理服务器获得IP地址?

发布时间:2019-11-29 14:57:18 来源:IP精灵

  我们都知道,代理服务器就像是一个第三方,将我们的信息先接收进行一个中转,然后再通过它来发出信息,经过这么个步骤,我们的IP就得到的隐藏。

如何通过代理服务器获得IP地址

  怎么通过代理服务器获得真实IP地址?

  /// 取得客户端真实IP。如果有代理则取第一个非内网地址

  ///

  public static string IPAddress

  {

  get

  {

  string result = String.Empty;

  result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

  if(result!=null&&result!= String.Empty)

  {

  //可能有代理

  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( Text.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(Text.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["REMOTE_ADDR"];

  if (null == result || result == String.Empty)

  result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

  if (result == null || result == String.Empty)

  result = HttpContext.Current.Request.UserHostAddress;

  return result;

  }

  }

  /// 判断是否是IP地址格式 0.0.0.0

  ///

  ///待判断的IP地址

  ///true or false

  public static bool IsIPAddress(string str1)

  {

  if(str1==null||str1==string.Empty||str1.Length<7||str1.length>15) return false;

  string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$";

  Regex regex = new Regex(regformat,RegexOptions.IgnoreCase );

  return regex.IsMatch(str1);

  }

  上面就是IP精灵带来的教程,如果大家需要获得真实IP,可以这么实现。