ホームページ > バックエンド開発 > PHPチュートリアル > PHP は CURL を使用して実際のクライアント IP を非表示にします

PHP は CURL を使用して実際のクライアント IP を非表示にします

WBOY
リリース: 2016-06-20 13:01:26
オリジナル
1401 人が閲覧しました

まず、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 メソッドによってプロキシ サーバーを使用していると検出されます。実際、透過プロキシと高度な匿名プロキシの間には大きな違いがあります。


関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート