プロキシ サーバーの背後にある真の IP アドレスを特定するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-05 03:18:02
オリジナル
338 人が閲覧しました

How to Identify the True IP Address Behind Proxy Servers?

プロキシ サーバーの背後にある真の IP アドレスの特定

$_SERVER['REMOTE_ADDR'] などの標準的な PHP メソッドを使用して訪問者の IP アドレスを取得する訪問者がプロキシ サーバー経由で Web サイトにアクセスしている場合、正確な情報が提供されない可能性があります。

この問題に対処するには、次の PHP コードの利用を検討してください。

<code class="php">function getUserIP()
{
    // Obtain the IP address of the visitor behind CloudFlare
    if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
        $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
        $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];

    $ip = null;

    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }

    return $ip;
}

$user_ip = getUserIP();

echo $user_ip; // Output IP address [Ex: 177.87.193.134]</code>
ログイン後にコピー

この関数は、まず、訪問者は、人気のあるプロキシ サービスである CloudFlare を使用しています。その場合、HTTP_CF_CONNECTING_IP ヘッダーを使用して実際の IP アドレスを取得します。

次に、HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR、および REMOTE_ADDR の 3 つの潜在的な IP ソースを検討します。各 IP アドレスを検証し、最も信頼できる IP アドレスを選択します。

このアプローチを採用すると、訪問者がプロキシ サーバーの背後にいる場合でも、訪問者の実際の IP アドレスを効果的に取得できます。

以上がプロキシ サーバーの背後にある真の IP アドレスを特定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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