当前位置:首页 > 网站建设 > php教程 > 正文内容

模拟IP、隐藏IP、代理IP、伪装IP、高匿代理、普匿代理、透明代理IP , 你永远获得不到我的真实IP

热淘网5年前 (2017-02-07)php教程1282

PHP世界不算漏洞的漏洞 - 你永远获得不到我的真实IP

我粗略列举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%系统


上面方法综合整理版如下:

 $forwarded_ip = mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255);
 $client_ip    = mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.$forwarded_ip, 'CLIENT-IP:'.$client_ip));

如何模拟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%系统


<p>扫描二维码推送至手机访问。</p><p>版权声明:本文由<strong>网站标题</strong>发布,如需转载请注明出处。</p>

本文链接:https://www.retao5.com/jiaocheng/1196.html

分享给朋友:

相关文章

页面跳转代码集锦

页面跳转代码集锦

按钮式:<INPUT name="pclog" type="button" value="/GO">链接式:<a href="javascript:history.go(-1)"&g...

mysql数据库字段对比

mysql数据库字段对比

一、数字类型         &nb...

PHP CURL CURLOPT参数说明(curl_setopt)

PHP CURL CURLOPT参数说明(curl_setopt)

CURLOPT_RETURNTRANSFER 选项:curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);如果成功只将结果返回,不自动输出任何内容。如果失败返回FALS...

mysql mysqldump只导出表结构或只导出数据的实现方法

mysql mysqldump只导出表结构或只导出数据的实现方法

mysql mysqldump只导出表结构或只导出数据的实现方法,需要的朋友可以参考下。mysql mysqldump 只导出表结构 不导出数据代码如下:mysqldump --opt -d 数据库名...

PHP中使用cURL实现Get和Post请求的方法

PHP中使用cURL实现Get和Post请求的方法

1.cURL介绍   cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 库。本文将介绍 cURL 的一些高级...

php var_export() 在将某个数组写入文件时,很好用

php var_export() 在将某个数组写入文件时,很好用

(PHP 4 >= 4.2.0, PHP 5)  var_export — 输出或返回一个变量的字符串表示  ( 变量导出)  mixed var_export ( mixed $ex...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。