Choisir une interface locale et un proxy dans un même transfert cURL
Utilisez CURLOPT_INTERFACE pour la source locale et CURLOPT_PROXY pour l'intermédiaire, en tenant compte du routage de l'OS et du NAT.
Une machine disposant de plusieurs adresses locales peut avoir besoin de l'une d'elles pour sa connexion à un proxy de transfert. cURL peut faire ces deux choix explicitement :
curl_setopt_array($handle, [
CURLOPT_URL => 'https://example.com/',
CURLOPT_INTERFACE => '192.0.2.20',
CURLOPT_PROXY => 'http://proxy.example:8080',
]);
Il s'agit d'une configuration illustrative pour un handle cURL existant. Remplacez 192.0.2.20 par une adresse source réellement disponible sur la machine qui exécute PHP. Pour une requête publique autorisée sans compte de proxy, la liste de proxys HTTP peut fournir l'écouteur distant pour la valeur du proxy.
CURLOPT_INTERFACE sélectionne le côté local de la connexion sortante. CURLOPT_PROXY sélectionne l'intermédiaire qui achemine la requête. Choisir une source locale ne transforme pas la machine en proxy distant et ne lui donne pas une adresse IP publique arbitraire.
Sur ce chemin, le choix local influe sur la connexion vers le proxy. Le site web voit généralement l'adresse source suivante du proxy. Le NAT entre l'une ou l'autre des paires peut encore traduire l'adresse que voit chaque destinataire.
Si la sélection d'interface est omise, libcurl laisse la pile TCP choisir une source appropriée. Ce choix suit la configuration réseau de la machine ; ce n'est pas une règle universelle que la première adresse d'un fichier de configuration l'emporte.
libcurl accepte les noms d'interface sur les plateformes prises en charge, mais sa documentation exclut la sélection de noms d'interface Windows pour cette option. Utiliser un nom d'hôte peut aussi déclencher une résolution bloquante. Une adresse locale connue est une entrée plus claire lorsque c'est le choix que l'application envisage.