2

http_x_forwarded_for を使用してプロキシ サーバーとクライアントの実際の IP アドレスを取得することを提案する多くの記事を読みましたが、どれも機能していないようです。

ローカル IP アドレスが割り当てられており、プロキシ サーバーを使用してインターネットに接続しています。しかし、$_SERVER 変数全体を表示したとき、私が使用した Real Machine IP と Proxy サーバーの痕跡は 1 つもありませんでした。

このリンクは $_SERVER 変数全体を示しています。

PHPでは無理だと思います。どうすればこれを達成できますか? Mozilla で使用している実際の IP アドレスとプロキシ サーバーを表示している Web ページを見たことがあるので、その可能性はわかっています。しかし、それがどの言語を使用していたのかはわかりません。

どうすれば達成できますか? CGI または JavaScript を使用する準備ができました。インターネット上で実際の例が見つかりませんでした。ヘルプ?

4

2 に答える 2

1

私が書いた小さなスイッチが、プロキシではなく実際の IP を取得するのに苦労していたほとんどの人の問題を解決することがわかりました。REMOTE_ADDRとが同じかどうかをチェックしHTTP_X_FORWARDED_FOR、同じ場合は を出力しREMOTE_ADDRます。それらが異なる場合、 は通常プロキシを返すHTTP_X_FORWARDED_FORため、 が正しいと想定します。REMOTE_ADDRお役に立てれば。良い方法があれば教えてください!kevin@tiger-tech.tk

  <?php 
  $ip = $_SERVER['REMOTE_ADDR'];
  $ip2 = $_SERVER['HTTP_X_FORWARDED_FOR'];

  switch($ip): 
  case $ip2: 
        $ipa = $_SERVER['REMOTE_ADDR'];
        $city= file_get_contents ("http://ipinfo.io/".$_SERVER['REMOTE_ADDR']."/city");
        $region= file_get_contents ("http://ipinfo.io/".$_SERVER['REMOTE_ADDR']."/region");
        $geo= file_get_contents ("http://ipinfo.io/".$_SERVER['REMOTE_ADDR']."/geo");
        break;
  default:
        $ipa = $_SERVER['HTTP_X_FORWARDED_FOR'];
        $city= file_get_contents ("http://ipinfo.io/".$_SERVER['HTTP_X_FORWARDED_FOR']."/city");
        $region= file_get_contents ("http://ipinfo.io/".$_SERVER['HTTP_X_FORWARDED_FOR']."/region");
        $geo= file_get_contents ("http://ipinfo.io/".$_SERVER['HTTP_X_FORWARDED_FOR']."/geo");
        break;
  endswitch;
   ?>
于 2014-11-23T05:18:13.680 に答える