你永遠獲得不到我的真實IP 模擬IP 隱藏IP 代理IP 僞裝IP 高匿代理 普匿代理 透明代理IP 原

PHP世界不算漏洞的漏洞 - 你永遠獲得不到我的真實IP

我粗略列舉6種PHP業內、國際各大開源系統獲取用戶真實IP的案例(包括Magento Zencart Zend Framework Yii...國內的就不提了吧!通殺!):

PHP獲取用戶真實IP方法1:

<?php
function 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:

<?php
error_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:

<?php
function 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:


<?php
if(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%系統



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章