Una macchina con più indirizzi locali può aver bisogno di uno di essi per la sua connessione a un proxy in avanti. cURL può fare entrambe le scelte in modo esplicito:

curl_setopt_array($handle, [
    CURLOPT_URL => 'https://example.com/',
    CURLOPT_INTERFACE => '192.0.2.20',
    CURLOPT_PROXY => 'http://proxy.example:8080',
]);

Questa è una configurazione illustrativa per un handle cURL esistente. Sostituisci 192.0.2.20 con un indirizzo di origine realmente disponibile sulla macchina che esegue PHP. Per una richiesta pubblica consentita senza un account proxy, la lista dei proxy HTTP può fornire l'ascoltatore remoto per il valore del proxy.

CURLOPT_INTERFACE seleziona il lato locale della connessione in uscita. CURLOPT_PROXY seleziona l'intermediario che porta avanti la richiesta. Scegliere un'origine locale non trasforma la macchina in un proxy remoto né le assegna un IP pubblico arbitrario.

Su questo percorso, la scelta locale influisce sulla connessione verso il proxy. Il sito web di solito vede l'indirizzo di origine successivo del proxy. Il NAT tra una delle due coppie può tradurre ulteriormente l'indirizzo che ogni destinatario vede.

Se la selezione dell'interfaccia viene omessa, libcurl lascia che lo stack TCP scelga un'origine adatta. Tale scelta segue la configurazione di rete della macchina; non è una regola universale che vinca il primo indirizzo in un file di configurazione.

libcurl accetta i nomi delle interfacce sulle piattaforme supportate, ma la sua documentazione esclude la selezione dei nomi delle interfacce Windows per questa opzione. Anche l'uso di un nome host può attivare una risoluzione bloccante. Un indirizzo locale noto è un input più chiaro quando è questa la scelta che l'applicazione intende.

Articoli correlati