Maison  >  Article  >  développement back-end  >  Comment identifier la véritable adresse IP derrière les serveurs proxy ?

Comment identifier la véritable adresse IP derrière les serveurs proxy ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-05 03:18:02289parcourir

How to Identify the True IP Address Behind Proxy Servers?

Identification de la véritable adresse IP derrière les serveurs proxy

Récupération de l'adresse IP d'un visiteur à l'aide de méthodes PHP standard telles que $_SERVER['REMOTE_ADDR'] peut ne pas fournir d'informations précises si le visiteur accède à votre site Web via un serveur proxy.

Pour résoudre ce problème, envisagez d'utiliser le code PHP suivant :

<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>

Cette fonction vérifie d'abord si le le visiteur utilise CloudFlare, un service proxy populaire. Si tel est le cas, il récupère la véritable adresse IP à l'aide de l'en-tête HTTP_CF_CONNECTING_IP.

Ensuite, il considère trois sources IP potentielles : HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR et REMOTE_ADDR. Il valide chaque adresse IP et sélectionne la plus fiable.

En adoptant cette approche, vous pouvez obtenir efficacement l'adresse IP réelle de vos visiteurs, même lorsqu'ils se trouvent derrière des serveurs proxy.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn