まず、PHP 環境をセットアップし、ip.php を作成します。
コードは次のとおりです:
<?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を作成します
コードは次のとおりです:
<?php error_reporting(0); require 'ip.php'; echo '<hr>'.'Your IP is '.GetIP().'<br>'.'<hr>'; /*echo 'REMOTE_ADDR is '.$_SERVER['REMOTE_ADDR'].'<br>'; echo 'HTTP_CLIENT_IP is '.$_SERVER['HTTP_CLIENT_IP'].'<br>'; echo 'HTTP_X_FORWARDED_FOR is '.$_SERVER['HTTP_X_FORWARDED_FOR'].'<br>'; echo 'HTTP_VIA is '.$_SERVER['HTTP_VIA'];*/ ?>
テスト
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 メソッドによってプロキシ サーバーを使用していると検出されます。実際、透過プロキシと高度な匿名プロキシの間には大きな違いがあります。