PHP 获取IP 相关

来源:互联网 发布:英国和美国的关系知乎 编辑:程序博客网 时间:2024/06/04 22:30
  • 获取用户真实IP原理:
  • 如何模拟用户真实IP?
  • 如何模拟HTTP_CLIENT_IP?HTTP_CLIENT_IP可以模拟么?伪装HTTP_CLIENT_IP!
  • 如何模拟HTTP_X_FORWARDED_FOR?HTTP_X_FORWARDED_FOR可以模拟么?伪装HTTP_X_FORWARDED_FOR!
  • 如何模拟REMOTE_ADDR?REMOTE_ADDR可以模拟么?伪装REMOTE_ADDR!
  • 我粗略列举6种PHP业内、国际各大开源系统获取用户真实IP的案例(包括Magento Zencart Zend Framework Yii...国内的就不提了吧!通杀!):

    PHP获取用户真实IP方法1:

    <?phpfunction GetIP(){if(!empty($_SERVER["HTTP_CLIENT_IP"])){  $cip = $_SERVER["HTTP_CLIENT_IP"];}elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){  $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];}elseif(!empty($_SERVER["REMOTE_ADDR"])){  $cip = $_SERVER["REMOTE_ADDR"];}else{  $cip = "无法获取!";}return $cip;}echo GetIP();?>

    PHP获取用户真实IP方法2:

    <?phperror_reporting (E_ERROR | E_WARNING | E_PARSE);if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]){$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];}elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]){$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];}elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]){$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];}elseif (getenv("HTTP_X_FORWARDED_FOR")){$ip = getenv("HTTP_X_FORWARDED_FOR");}elseif (getenv("HTTP_CLIENT_IP")){$ip = getenv("HTTP_CLIENT_IP");}elseif (getenv("REMOTE_ADDR")){$ip = getenv("REMOTE_ADDR");}else{$ip = "Unknown";}echo $ip;?>


    PHP获取用户真实IP方法3:

    <?php$iipp = $_SERVER["REMOTE_ADDR"];echo $iipp ;?>


    PHP获取用户真实IP方法4:

    <?php$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];echo $user_IP?>


    PHP获取用户真实IP方法5:

    <?phpfunction get_real_ip(){$ip=false;if(!empty($_SERVER["HTTP_CLIENT_IP"])){  $ip = $_SERVER["HTTP_CLIENT_IP"];}if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){  $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);  if($ip){   array_unshift($ips, $ip); $ip = FALSE;  }  for($i = 0; $i < count($ips); $i++){   if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])){    $ip = $ips[$i];    break;   }  }}return($ip ? $ip : $_SERVER['REMOTE_ADDR']);}echo get_real_ip();?>


    PHP获取用户真实IP方法6:

    <?phpif(getenv('HTTP_CLIENT_IP')){$onlineip = getenv('HTTP_CLIENT_IP');}elseif(getenv('HTTP_X_FORWARDED_FOR')){$onlineip = getenv('HTTP_X_FORWARDED_FOR');}elseif(getenv('REMOTE_ADDR')){$onlineip = getenv('REMOTE_ADDR');}else{$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];}echo $onlineip;?>

    获取用户真实IP原理:

    客官看完了业界常用的获取用户真实IP方法后,发现有个共同规律,主要核心就是

    1. HTTP_CLIENT_IP
    2. HTTP_X_FORWARDED_FOR
    3. REMOTE_ADDR

    不同的演变,只是代码兼容性罢了!

    如何模拟用户真实IP?

    问:如果可以伪造模拟HTTP_CLIENT_IP,伪造模拟HTTP_X_FORWARDED_FOR,伪造模拟REMOTE_ADDR,不就可以达到追踪不到用户真实IP的目的了么?

    答:楼上理解完全正确!如果做到这样完全可以通杀99%的获取用户真实IP,以用户IP为标识的系统!

    支招【LET采集技巧】(curl、socket、fsocketopen、stream_socket_client):

    如何模拟HTTP_CLIENT_IP?HTTP_CLIENT_IP可以模拟么?伪装HTTP_CLIENT_IP!

    curl_setopt($curl, CURLOPT_HTTPHEADER, array (            'Client_Ip: '.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255),));//优点:伪造成本低,通杀90%系统


    如何模拟HTTP_X_FORWARDED_FOR?HTTP_X_FORWARDED_FOR可以模拟么?伪装HTTP_X_FORWARDED_FOR!

    curl_setopt($curl, CURLOPT_HTTPHEADER, array (            'X-Forwarded-For: '.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255),));//优点:伪造成本低,通杀90%系统


    如何模拟REMOTE_ADDR?REMOTE_ADDR可以模拟么?伪装REMOTE_ADDR!

    curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);curl_setopt($curl, CURLOPT_PROXY, '1.1.1.1:8080');//自行百度获得普匿代理IP即可,高匿代理IP更佳!//优点:通杀100%系统本文地址:http://blog.csdn.net/aerchi/article/details/51604731
    0 0