日期:2014-05-17  浏览次数:20574 次

怎么得到客户端真正的ip?
我想知道怎么能得到客户端真正的ip地址,我看网上怎么说的都有,有没有权威一点的文档和说法?
网上流行的下面的说法对吗?
一、没有使用代理服务器的情况:

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

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

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

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

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

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

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

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

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

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

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

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示。

完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。这就是高度匿名的好处。。

------解决方案--------------------
应该差不多
------解决方案--------------------
試試這個,但也並非萬能
PHP code
//取得IP的方法,摘自DZ
Function getIp(){
    $Ip='';
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $Ip=getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $Ip=getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $Ip=getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $Ip=$_SERVER['REMOTE_ADDR'];
    }
    return $Ip;
}

------解决方案--------------------
探讨

試試這個,但也並非萬能
PHP code
//取得IP的方法,摘自DZ
Function getIp(){
$Ip='';
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$Ip=getenv('HTTP_CLIENT_IP');……