curl的强大也还真的不是吹出来的哦!
facebook,msn,hotmail.yahoo(因为工作需要)这些都模拟进去过
原本以为IP是不能模拟的,来源地址伪造还听说过
说这也搞笑,自己都用了curl这长时间,竞然都不了解这个哦
不扯远了
正题…
curl发出请求的文件fake_ip.php:
- <?php$ch=curl_init(); $url="http://localhost/target_ip.php"; $header=array('CLIENT-IP:58.68.44.61','X-FORWARDED-FOR:58.68.44.61',); 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; ?>
复制代码 请求的目标文件target_ip.php:
- <?php echo getenv('HTTP_CLIENT_IP');
- echo getenv('HTTP_X_FORWARDED_FOR');
- echo getenv('REMOTE_ADDR');?>
复制代码
目标文件target_ip里面的IP打印顺序是目前很多开源系统的IP获取顺序
访问fake_ip.php,看到结果:
58.68.44.61
58.68.44.61
127.0.0.1
也就是说只有REMOTE_ADDR的值没有被伪造,在网上找了找资料这里的REMOTE_ADDR通过PHP是改不了的,如果哪位能改,请赐教.
如果非得让REMOTE_ADDR改变,那就只能用代理了,curl支持代理,用上代理后REMOTE_ADDR的值就是你的代理IP值了.
小小的总结一下:
伪造的IP,最大程度上的识别请用REMOTE_ADDR来获取客户端IP
这里说的是最大程序上的,如果伪造者拥有很多代理IP,那就没话说了 附加说明: 模拟ip只是其中必备条件之一,还需要一下几点:
1.模拟ip
2.模拟header
3.模拟cookie
总之模拟浏览器就对了
|