Hvilken proxy brugte denne PHP cURL-anmodning?
Skeln mellem den konfigurerede proxy, den forbundne peer og den offentlige udgang, som destinationen ser.
“Hent proxyen” kan betyde tre forskellige ting i en PHP cURL-applikation. Beslut, hvilken observation du har brug for, før du tilføjer endnu en anmodning.
| Spørgsmål | Hvor du skal kigge |
|---|---|
| Hvilket endepunkt konfigurerede applikationen? | Den konfiguration, der blev givet til håndtaget |
| Blev der brugt en proxy til denne overførsel? | Overførselsinformation, hvor det understøttes |
| Hvilken offentlig adresse så webstedet? | En observation på den destination |
Behold det valgte endepunkt ved siden af håndtaget eller anmodningsobjektet. curl_getinfo er en grænseflade til overførselsinformation, ikke en generel getter for hver tidligere tildelt CURLOPT-værdi. Det er enklere at beholde applikationens konfiguration end at forsøge at opsnappe curl_setopt-kald.
Undersøg den afsluttede overførsel
Efter overførslen er den forbundne peer tilgængelig via CURLINFO_PRIMARY_IP. Når den første forbindelse går til en proxy, kan den peer være proxyens adresse i stedet for webstedets adresse.
$peer = curl_getinfo($ch, CURLINFO_PRIMARY_IP);
$usedProxy = defined('CURLINFO_USED_PROXY')
? curl_getinfo($ch, constant('CURLINFO_USED_PROXY'))
: null;
CURLINFO_USED_PROXY blev føjet til libcurl i 8.7.0 og eksponeres af kompatible PHP-builds. Resultatet rapporterer proxybrug, ikke den valgte proxys fulde URL. Hvis konstanten ikke er tilgængelig, betyder null ovenfor, at observationen ikke er tilgængelig, ikke at anmodningen gik direkte.
Læs disse værdier, mens håndtaget stadig beskriver den pågældende handling. En mislykket forbindelse giver måske ikke en brugbar peer-adresse, og en eksplicit proxy kan stadig omgås af en gældende undtagelse.
Et IP-tjek-endepunkt besvarer det tredje spørgsmål. Dets svar kan beskrive en udgang bag proxyen, mens det konfigurerede værtsnavn opløses til en anden indgang. Ingen af adresserne bør erstattes med den anden i applikationens indstillinger.