PHP 使用CURL库IP欺骗,隐藏真实客户端IP,只有通过代理服务器或者路由底层tcp/ip来实现

REMOTE_ADDR web客户端真实ip,是不可用http消息头伪造的

最近,在开发一个采j器,怎么也不能用伪造的ip进行采集.网上找了不少资料..
对方使用了 REMOTE_ADDR方法获取ip,这个函数是不能伪造的,
像HTTP_X_FORWARDED_FOR这个可以获取到伪造的ip,获取代理使用比较多,
像 HTTP_CLIENT_IP   这个是客户端带上来的,一般无空值..[ 也可以被伪造出来,
  今天就是讲给REMOTE_ADDR不可以伪造的,就在curl 中也无法伪造 相对是比较安全的服务端ip获取方法
  当然,也有可能被路由伪造 这个不好说,因为REMOTE_ADDR 是底层的回话ip地址,路有是可以发起伪造。
  所以,网上很多人都在问这个问题,也有很多人不死心,,但现实确实是残酷的 也是完美的
 给个演示案例你吧:你就信了
1.将以下代码保存为 Client.php 
//php脚本开始
<?php 
$ch = curl_init(); 
$url = "http://localhost/ser.php"; 
$header = array( 'CLIENT-IP:208.165.188.175', 'X-FORWARDED-FOR:208.165.188.175, );
//声明伪造head请求头 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); 
$page_content = curl_exec($ch); curl_close($ch); 
echo $page_content;?>
2.将以下代码保存为 ser.php
//php脚本开始
<?php
echo getenv('HTTP_CLIENT_IP');
echo getenv('HTTP_X_FORWARDED_FOR');
echo getenv('REMOTE_ADDR');
?>
测试结果为
//html脚本开始
208.165.188.175
208.165.188.175
127.0.0.1
//上面结果可看出,http_client_ip,http_x_forwarded_for 都被伪造了
而remote_addr 还是127.0.0.1 就是客户端ip



二,下面是通过代理服务器就可隐藏真实remote_addr ip地址


<?php

error_reporting(0);

function curl_string ($url,$user_agent,$proxy){
$ch = curl_init();
curl_setopt ($ch, CURLOPT_PROXY, $proxy);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt ($ch, CURLOPT_COOKIEJAR, "d:\cookies.txt");
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP:125.210.188.36', 'X-FORWARDED-FOR:125.210.188.36'));  //此处可以改为任意假IP
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_TIMEOUT, 120);

$result = curl_exec ($ch);
curl_close($ch);
return $result;
}
$url_page = "http://s4nd.no-ip.org/test/index.php";
$user_agent = "Mozilla/4.0";
$proxy = "http://125.210.188.36:80";    //此处为代理服务器IP和PORT

$string = curl_string($url_page,$user_agent,$proxy);

echo $string;

?>

访问curl_proxy.php

 

122.66.*.*是运行脚本服务器的IP,这样就实现了隐藏客户端真实IP的目的。

有的代理服务器会被HTTP_VIA方法侦测到使用了代理服务器,实际上透明代理和高级匿名代理有很大区别。


版权声明:本文为gongpeng1966原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。