Alegeți o interfață locală și un proxy în același transfer cURL
Folosiți CURLOPT_INTERFACE pentru sursa locală și CURLOPT_PROXY pentru intermediar, ținând cont de rutarea sistemului de operare și de NAT.
O mașină cu mai multe adrese locale poate avea nevoie de una dintre ele pentru conexiunea la un proxy de redirecționare. cURL poate face ambele alegeri în mod explicit:
curl_setopt_array($handle, [
CURLOPT_URL => 'https://example.com/',
CURLOPT_INTERFACE => '192.0.2.20',
CURLOPT_PROXY => 'http://proxy.example:8080',
]);
Aceasta este o configurație ilustrativă pentru un handle cURL existent. Înlocuiți 192.0.2.20 cu o adresă sursă disponibilă efectiv pe mașina care rulează PHP. Pentru o cerere publică permisă fără cont de proxy, lista de proxy HTTP poate furniza ascultătorul la distanță pentru valoarea proxy.
CURLOPT_INTERFACE selectează partea locală a conexiunii de ieșire. CURLOPT_PROXY selectează intermediarul care duce cererea mai departe. Alegerea unei surse locale nu transformă acea mașină într-un proxy la distanță și nu îi oferă un IP public arbitrar.
Pe această cale, alegerea locală afectează conexiunea spre proxy. Site-ul vede de obicei adresa sursă ulterioară a proxy-ului. NAT-ul dintre orice pereche poate traduce suplimentar adresa pe care o vede fiecare destinatar.
Dacă selecția interfeței este omisă, libcurl lasă stiva TCP să aleagă o sursă potrivită. Acea alegere urmează configurația de rețea a mașinii; nu este o regulă universală că prima adresă dintr-un fișier de configurare câștigă.
libcurl acceptă nume de interfață pe platformele acceptate, dar documentația sa exclude selectarea numelui de interfață Windows pentru această opțiune. Folosirea unui hostname poate declanșa, de asemenea, o căutare blocantă. O adresă locală cunoscută este o intrare mai clară atunci când aceasta este alegerea intenționată de aplicație.