Quale proxy ha usato questa richiesta PHP cURL?
Distinguere il proxy configurato, il peer connesso e l'uscita pubblica osservata da una destinazione.
«Ottieni il proxy» può significare tre cose diverse in un'applicazione PHP cURL. Decidete quale osservazione vi serve prima di aggiungere un'altra richiesta.
| Domanda | Dove guardare |
|---|---|
| Quale endpoint ha configurato l'applicazione? | La configurazione fornita all'handle |
| È stato usato un proxy per questo trasferimento? | Informazioni sul trasferimento, dove supportate |
| Quale indirizzo pubblico ha visto il sito? | Un'osservazione presso quella destinazione |
Conservate l'endpoint scelto accanto all'handle o all'oggetto della richiesta. curl_getinfo è un'interfaccia di informazioni sul trasferimento, non un getter generico per ogni valore CURLOPT assegnato in precedenza. Conservare la configurazione dell'applicazione è più semplice che tentare di intercettare le chiamate a curl_setopt.
Ispezionate il trasferimento completato
Dopo il trasferimento, il peer connesso è disponibile tramite CURLINFO_PRIMARY_IP. Quando la prima connessione passa per un proxy, quel peer può essere l'indirizzo del proxy anziché quello del sito.
$peer = curl_getinfo($ch, CURLINFO_PRIMARY_IP);
$usedProxy = defined('CURLINFO_USED_PROXY')
? curl_getinfo($ch, constant('CURLINFO_USED_PROXY'))
: null;
CURLINFO_USED_PROXY è stato aggiunto a libcurl nella versione 8.7.0 ed è esposto dalle build PHP compatibili. Il suo risultato segnala l'uso del proxy, non l'URL completo del proxy scelto. Se la costante non è disponibile, il null qui sopra significa che l'osservazione non è disponibile, non che la richiesta sia passata direttamente.
Leggete questi valori finché l'handle descrive ancora l'operazione in questione. Una connessione fallita può non fornire un indirizzo peer utile, e un proxy esplicito può comunque essere aggirato da un'esclusione applicabile.
Un endpoint di controllo IP risponde alla terza domanda. La sua risposta può descrivere un'uscita dietro il proxy, mentre il nome host configurato si risolve in un ingresso diverso. Nessuno dei due indirizzi deve essere sostituito con l'altro nelle impostazioni dell'applicazione.