„Získej proxy“ může v aplikaci PHP cURL znamenat tři různé věci. Rozhodněte, které pozorování potřebujete, než přidáte další požadavek.

OtázkaKam se podívat
Který koncový bod aplikace nakonfigurovala?Konfigurace předaná handle
Byl pro tento přenos použit proxy?Informace o přenosu, pokud jsou podporované
Kterou veřejnou adresu web viděl?Pozorování na tomto cíli

Uchovejte vybraný koncový bod vedle handle nebo objektu požadavku. curl_getinfo je rozhraní pro informace o přenosu, nikoli obecný getter pro každou dříve přiřazenou hodnotu CURLOPT. Ponechat si konfiguraci aplikace je jednodušší než se snažit zachytit volání curl_setopt.

Prohlédněte dokončený přenos

Po přenosu je připojený protějšek dostupný přes CURLINFO_PRIMARY_IP. Když první spojení míří na proxy, může být tím protějškem adresa proxy, nikoli adresa webu.

$peer = curl_getinfo($ch, CURLINFO_PRIMARY_IP);
$usedProxy = defined('CURLINFO_USED_PROXY')
    ? curl_getinfo($ch, constant('CURLINFO_USED_PROXY'))
    : null;

CURLINFO_USED_PROXY byl přidán do libcurl ve verzi 8.7.0 a zpřístupňují ho kompatibilní buildy PHP. Jeho výsledek hlásí použití proxy, ne úplnou URL vybraného proxy. Pokud konstanta není dostupná, null výše znamená, že pozorování není k dispozici, a ne že požadavek šel přímo.

Čtěte tyto hodnoty, dokud handle ještě popisuje danou operaci. Neúspěšné spojení nemusí dát použitelnou adresu protějšku a explicitní proxy lze stále obejít použitelnou výjimkou.

Koncový bod pro kontrolu IP odpovídá na třetí otázku. Jeho odpověď může popsat výstup za proxy, zatímco nakonfigurované jméno hostitele se překládá na jiný vstup. V nastavení aplikace se jedna adresa nesmí nahrazovat druhou.

Související články