“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ålHvor 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.

Relaterede artikler