Quel proxy cette requête PHP cURL a-t-elle utilisé ?
Distinguez le proxy configuré, le pair connecté et la sortie publique vue par une destination.
« Obtenir le proxy » peut signifier trois choses différentes dans une application PHP cURL. Décidez quelle observation vous faut-il avant d'ajouter une autre requête.
| Question | Où regarder |
|---|---|
| Quel point de terminaison l'application a-t-elle configuré ? | La configuration transmise au handle |
| Un proxy a-t-il été utilisé pour ce transfert ? | Les informations de transfert, lorsqu'elles sont disponibles |
| Quelle adresse publique le site a-t-il vue ? | Une observation à cette destination |
Conservez le point de terminaison choisi à côté du handle ou de l'objet de requête. curl_getinfo est une interface d'informations de transfert, pas un getter général pour chaque valeur CURLOPT attribuée auparavant. Conserver la configuration de l'application est plus simple que de tenter d'intercepter les appels à curl_setopt.
Inspectez le transfert terminé
Après le transfert, le pair connecté est disponible via CURLINFO_PRIMARY_IP. Quand la première connexion passe par un proxy, ce pair peut être l'adresse du proxy plutôt que celle du site.
$peer = curl_getinfo($ch, CURLINFO_PRIMARY_IP);
$usedProxy = defined('CURLINFO_USED_PROXY')
? curl_getinfo($ch, constant('CURLINFO_USED_PROXY'))
: null;
CURLINFO_USED_PROXY a été ajouté à libcurl en 8.7.0 et est exposé par les versions de PHP compatibles. Son résultat signale l'usage d'un proxy, pas l'URL complète du proxy choisi. Si la constante est indisponible, le null ci-dessus signifie que l'observation est indisponible, et non que la requête est passée en direct.
Lisez ces valeurs tant que le handle décrit encore l'opération concernée. Une connexion échouée peut ne pas fournir d'adresse de pair exploitable, et un proxy explicite peut encore être contourné par une exclusion applicable.
Un point de terminaison de vérification d'IP répond à la troisième question. Sa réponse peut décrire une sortie derrière le proxy, alors que le nom d'hôte configuré se résout vers une entrée différente. Aucune des deux adresses ne doit être substituée à l'autre dans les réglages de l'application.