PHP 使用CURL库IP欺骗,隐藏真实客户端IP

首先搭建环境,建立个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方法侦测到使用了代理服务器,实际上透明代理和高级匿名代理有很大区别。

原文:http://s4nds.diandian.com/post/2012-03-24/17240144

时间: 2024-11-09 14:36:27

PHP 使用CURL库IP欺骗,隐藏真实客户端IP的相关文章

nginx+tomcat集群配置(3)---获取真实客户端IP

前言: 在初步构建的nginx+tomcat服务集群时, 发现webserver获取到的客户端ip都是同一个, 皆为作为反向代理服务的nginx所在的机器IP. 这不太符合我们的基本需求, 为将来的数据挖掘和分析带来了麻烦. 不过不用担心, 本文将简单介绍其背后的原因和原理, 以及具体的解决方案, ^_^. 原因分析: webserver在获取客户端ip时, 默认的方式是通过request.getRemoteAddr(), 这种方式本质是从直连的socket中获取到的. 因此客户端直连web s

nginx做反向负载均衡,后端服务器获取真实客户端ip

开门见山,操作如下: 首先,在前端nginx上需要做如下配置: location / { proxy_pass http://test1; proxy_set_hearder host $host; proxy_set_header X-Real_IP $remoute_addr; proxy_set_header $proxy_add_x_forwarded_for; }; nginx会在把请求转向后台real-server前把http报头中的ip地址进行替换:这样操作完成后,real-ser

apache关于记录真实客户端ip和不记录健康检查日志

由于负载均衡会转发客户端的请求到web服务器,所以web服务往往记录的是负载均衡的IP,现在可以通过下面的配置,让apache记录真实客户端IP 语法 #LogFormat  "\"%{X-Forwarded-For}i\"%l %t \"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined 普通日志和记录客户端IP的apache日志比较 #L

nginx前端代理tomcat取真实客户端IP

使用Nginx作为反向代理时,Tomcat的日志记录的客户端IP就不在是真实的客户端IP,而是Nginx代理的IP.要解决这个问题可以在Nginx配置一个新的Header,用来存储$remote_add,然后再Tomcat获取记录这个值. 新增nginx配置. server { listen 80; server_name www.xxxxx.com; location / { proxy_pass http://IP:8080/; proxy_set_header X-Real-IP $rem

apache 日志中记录代理IP以及真实客户端IP

vim /usr/local/apach2/conf/httpd.conf 默认情况下log日志格式为:LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined其中%h 是记录访问者的IP,如果在web的前端有一层代理,那么这个%h其实就是代理机器的IP,这不是我们想要的.在这种情况下,%{X-FORWARDED-F

公网IP是不是真实的iP 如何判断公网IP是否是真实的IP地址

怎么查自己的公网IP是不是真实的.有以下几个步骤 一: 打开这个网址  http://www.ip138.com/   就有如图的ip地址.复制这个IP地址.然后继续第二步操作. 二:打开这个网址,这输入IP那栏粘贴你刚才复制的ip,然后点查询.以我的这个出差的地址为例: 如图看到有响应时间,说明,这个是有真实的公网IP...就可以免费用花生壳,或者金万维了.速度还可以. 如果如下图,那就要用内网版的花生壳或者金万维,或者其他内网的软件映射或者VPN等等.最实惠的是内网版花生壳了. 响应时间跟

LAMP--Apache 日志记录代理 ip 和真实客户端 ip

默认的log日志格式在主配置文件 httpd.conf 中可以看到: [[email protected] ~]# vim /usr/local/apache2/conf/httpd.conf     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined     LogFormat "%h %l %u 

(转)apache 日志中记录代理IP以及真实客户端IP

原文:http://ask.apelearn.com/question/960 https://www.ibm.com/mysupport/s/question/0D50z00005phrbqCAA/how-to-capture-real-client-ip-in-websphere-application?language=zh_CN 默认情况下log日志格式为:LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer

如何判断自己外网IP是否为真实公网IP,以及解决方案

    如何判断本地(路由器)分配的IP是否公网IP? 公网IP:全球唯一IP地址.(公网IP又分为静态公网IP和动态公网IP,如何分辨的话,进入路由器查看连接方式pppoe连接都是动态公网IP.) 有这么一种情况:拉的联通的带宽,分配的IP只能在联通内部访问,移动网络不能访问.这个IP最多只能算是"联通内的公网IP",不是真的公网IP. 有多种方法都可以判断本地(路由)IP是否公网IP,以下一一罗列以供小伙伴们参考. 一,经验法: 1,一般电信adsl带宽在未升级大带宽前是(动态)公