[使用介绍]如何通过代理服务器获得IP地址?

发布时间:2020-05-24 关注热度:°C

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

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

  怎么通过代理服务器获得真实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);

  }

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

 

版权声明:本文为IP海(iphai.cn)原创作品,未经许可,禁止转载!

Copyright © 2020 www.iphai.cn. All Rights Reserved. IP海 版权所有.
IP海仅提供中国内IP加速服务,无法跨境联网,用户使用IP海从事的任何行为均不代本公司的意志和观点,产生的相关责任用户自负。
ICP备案鄂ICP备19030659号-3 公安备案鄂公网安备42100302000141号 计算机软件著作权证计算机软件著作权证 ICP/EDI许可证ICP/EDI许可证:鄂B2-20200106

扫一扫,加企业微信