黄聪

论SEO对人类的重要性,请看我的博客:hcsem.com

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  884 随笔 :: 0 文章 :: 903 评论 :: 389万 阅读

首先搭建环境,建立个ip.php.

代码如下:

复制代码
<?

error_reporting(0);

function GetIP(){
if($_SERVER['HTTP_CLIENT_IP']){
   $onlineip=$_SERVER['HTTP_CLIENT_IP'];
   }elseif($_SERVER['HTTP_X_FORWARDED_FOR']){
   $onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];
   }else{
   $onlineip=$_SERVER['REMOTE_ADDR'];
   }
return $onlineip;
}

?>
复制代码

 

再建立个index.php

代码如下:

复制代码
 1 <?php
 2 
 3 error_reporting(0);
 4 
 5 require 'ip.php';
 6    
 7 echo '<hr>'.'Your IP is '.GetIP().'<br>'.'<hr>';
 8 
 9 /*echo 'REMOTE_ADDR is '.$_SERVER['REMOTE_ADDR'].'<br>';
10 echo 'HTTP_CLIENT_IP is  '.$_SERVER['HTTP_CLIENT_IP'].'<br>';
11 echo 'HTTP_X_FORWARDED_FOR is '.$_SERVER['HTTP_X_FORWARDED_FOR'].'<br>';
12 echo 'HTTP_VIA is '.$_SERVER['HTTP_VIA'];*/
13 
14 ?>
复制代码

 

测试:

IP显示正确,客户端真实IP是218.241.179.50

去掉index.php里面的注释,使用代理观察

可以看到REMOTE_ADDR方法抓到了代理IP

HTTP_XFORWARDED_FOR还是抓到了客户端的真实IP

接下来编辑curl_proxy.php,示例代码:

复制代码
<?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方法侦测到使用了代理服务器,实际上透明代理和高级匿名代理有很大区别。

注意:有一次我做开发的时候发现对方使用的是$_SERVER['REMOTE_ADDR'],无论我怎么改变curl发现对方还是可以获取到我的真实ip,然后我百度了半天才确认curl无法模拟$_SERVER['REMOTE_ADDR'],你只能祈祷对方用的不是$_SERVER['REMOTE_ADDR']获取你的ip。

转载:https://www.cnblogs.com/godrain/p/4401524.html

posted on   黄聪  阅读(89)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
历史上的今天:
2017-04-29 黄聪:AngularJS中的$resource使用与Restful资源交互(转)
2015-04-29 黄聪:360浏览器如何使用插件实现解除网页禁用右键复制的限制(Enable Copy)
2015-04-29 黄聪:wordpress中PHP运行错最有效解决办法Fatal error: Out of memory (allocated 6029312)(转)
点击右上角即可分享
微信分享提示