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

作者:IPIDEA

2022-09-23 15:22:29

     

    众所周知,代理服务器就像第三方,先接收我们的信息,然后通过它发送信息。经过这样的步骤,我们的IP得以保护安全访问。

通过代理服务器获得IP地址.png


  如何通过代理服务器获得真实性的IP地址?


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

      /// </summary>

      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

      /// </summary>

      /// <param name="str1">待判断的IP地址</param>

      /// <returns>true or false</returns>

      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);

      }

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

*ipidea提供的服务必须在境外网络环境下使用

热门资讯