宝马娱乐在线城-宝马娱乐在线

来自 互联网络 2019-10-01 17:10 的文章
当前位置: 宝马娱乐在线城 > 互联网络 > 正文

获取用户真实ip地址的方法

五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

例子2

  REMOTE_ADDR = 代理服务器 IP

      REMOTE_ADDR = 最后一个代理服务器 IP
      HTTP_VIA = 代理服务器 IP
      HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

  HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

  $ip = $_SERVER['REMOTE_ADDR'];    //PHP获取IP

      REMOTE_ADDR = 最后一个代理服务器 IP
      HTTP_VIA = 代理服务器 IP
      HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

一、没有使用代理服务器的情况:

  五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

 代码如下

实例

/*

   告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

  }

  HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

      REMOTE_ADDR = 代理服务器 IP
      HTTP_VIA = 没数值或不显示
      HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

 

   告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

三、使用普通匿名代理服务器的情况:Anonymous Proxies

  $ip = $_SERVER['HTTP_CLIENT_IP'];    //PHP获取IP

/**
* 获得用户的真实IP地址
*
* @access  public
* @return  string
*/
function real_ip()
{
// 初始化一个变量$realip
    static $realip = NULL;
    // 如果$realip不真等于NULL,返回之
    if ($realip !== NULL)
    {
        return $realip;
    }
// 如果$_SERVER有值
    if (isset($_SERVER))
    {
     // 如果$_SERVER['HTTP_X_FORWARDED_FOR']有值
     // 表明客户端通过代理上网
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        {
         // 使用explode()函数将其用','分割成数组
            $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
            // 开始遍历数组
            foreach ($arr AS $ip)
            {
             // 去掉首尾的空白
                $ip = trim($ip);
    // 不是unknown就是真实上网地址,存值并退出循环
                if ($ip != 'unknown')
                {
                    $realip = $ip;
                    break;
                }
            }
        }
        // $_SERVER['HTTP_X_FORWARDED_FOR']无值 且
        // $_SERVER['HTTP_CLIENT_IP']有值,取其值作为真实IP
        elseif (isset($_SERVER['HTTP_CLIENT_IP']))
        {
            $realip = $_SERVER['HTTP_CLIENT_IP'];
        }
        // $_SERVER['HTTP_X_FORWARDED_FOR']无值(不是用过代理上网)并且
        // $_SERVER['HTTP_CLIENT_IP']也没有值
        else
        {
         // 如果$_SERVER['REMOTE_ADDR']有值,取其值作为真实IP
            if (isset($_SERVER['REMOTE_ADDR']))
            {
                $realip = $_SERVER['REMOTE_ADDR'];
            }
            else // 都没有值返回'0.0.0.0'
            {
                $realip = '0.0.0.0';
            }
        }
    }
    // $_SERVER没有值
    else
    {
     // 如果getenv('HTTP_X_FORWARDED_FOR')非空取其值作为真实IP
        if (getenv('HTTP_X_FORWARDED_FOR'))
        {
            $realip = getenv('HTTP_X_FORWARDED_FOR');
        }
        // 如果getenv('HTTP_CLIENT_IP')非空取其值作为真实IP
        elseif (getenv('HTTP_CLIENT_IP'))
        {
            $realip = getenv('HTTP_CLIENT_IP');
        }
        // 否则取getenv('REMOTE_ADDR')的值作为真实IP
        else
        {
            $realip = getenv('REMOTE_ADDR');
        }
    }
    preg_match("/[d.]{7,15}/", $realip, $onlineip); // 此句干嘛用的?请高人指教一下。
    $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0'; // 此句又是干嘛用的?请指教。
    return $realip;
}

 代码如下

  告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

例子1(获取用户真实IP地址)

      REMOTE_ADDR = 最后一个代理服务器 IP
      HTTP_VIA = 代理服务器 IP
      HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

      REMOTE_ADDR = 最后一个代理服务器 IP
      HTTP_VIA = 代理服务器 IP
      HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

  HTTP_VIA = 代理服务器 IP

四、使用欺骗性代理服务器的情况:Distorting Proxies

针对以上的属性分析将代码改为:

  if($_SERVER['HTTP_CLIENT_IP']) {

      REMOTE_ADDR = 代理服务器 IP
      HTTP_VIA = 没数值或不显示
      HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

  }

      REMOTE_ADDR = 代理服务器 IP
      HTTP_VIA = 代理服务器 IP
      HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

  } else {

   这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

*/
//获取用户真实IP
function get_client_ip() {
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else
if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else
if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else
if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return ($ip);
}
echo $ip=get_client_ip();//这就是你的ip地址
?>

 

   这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

/// <summary>
        /// 获取客户端Ip
      /// </summary>
      /// <returns></returns>
        public string GetUserIP()
        {
            string _userIP;
            try
            {
                if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] == null)
                {
                    _userIP = HttpContext.Current.Request.UserHostAddress;
                }
                else
                {
                    _userIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                }
            }
            catch (Exception)
            {
                _userIP = "无法获取此IP";
            }
            return _userIP;
        }

五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

  四、使用欺骗性代理服务器的情况:Distorting Proxies

 function getIp() {

  REMOTE_ADDR = 最后一个代理服务器 IP

   隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

最近在获取浏览客户端IP的功能的时候出现一个问题,主要的现象是这样的:一个在武汉使用北京电信的客户端的IP始终不能被我的程序访问,查了些资料修改了下,主要是对于c#获取IP的三种属性(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)的区分分析如下:

      REMOTE_ADDR = 您的 IP
      HTTP_VIA = 没数值或不显示
      HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:Transparent Proxies

      REMOTE_ADDR = 代理服务器 IP
      HTTP_VIA = 代理服务器 IP
      HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

本文由宝马娱乐在线城发布于互联网络,转载请注明出处:获取用户真实ip地址的方法

关键词: