首先搭建環境,建立個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