2016-03-05 1 views
-1

J'ai un serveur mais cURL utilisant l'adresse IP du serveur. Je veux boucler le moment d'utiliser l'adresse IP de la personne entrant dans le serveur. Comment puis-je utiliser l'adresse IP de l'utilisateur avec cURLComment utiliser une IP utilisateur avec PHP/cURL?

+1

Demandez-vous comment faire une requête HTTP avec curl et donner l'impression que la requête a été faite par quelqu'un d'autre? Ce n'est pas quelque chose que les gens veulent faire très souvent. Voir https://en.m.wikipedia.org/wiki/IP_address_spoofing – Joni

Répondre

0

Vous souhaitez effectuer une requête HTTP qui fait croire au serveur distant qu'il provient de l'adresse IP de votre utilisateur. Ce n'est pas possible. L'adresse IP de l'utilisateur n'est pas incluse dans la requête HTTP; la valeur que vous obtenez dans $_SERVER['REMOTE_ADDR] provient du protocole IP. Toutefois, vous pouvez agir en tant que proxy pour votre utilisateur. Il semble que vous le sachiez déjà, mais vous ne pouviez pas trouver la bonne façon de le faire.

En effet, vous devez ajouter un en-tête à votre demande au serveur distant. Cependant, l'argument que vous passez à CURLOPT_HTTPHEADER est une liste de requêtes HTTP qui sont écrites mot pour mot dans la demande cUrl envoie.

Cela signifie que votre code doit lire:

curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Forwarded-For: $ip")); 

averti que le serveur distant peut ignorer l'en-tête, que ce soit parce que le programmeur supervisé la possibilité des clients d'utiliser un proxy HTTP ou parce que l'en-tête peut être facilement forgé. S'il l'ignore, il utilise l'adresse IP de votre serveur comme adresse IP du client (ce que vous voulez éviter en premier lieu).

En savoir plus sur l'en-tête HTTP X-Forwarded-For.