„Pobierz proxy” może w aplikacji PHP cURL oznaczać trzy różne rzeczy. Zdecyduj, jakiej obserwacji potrzebujesz, zanim dodasz kolejne żądanie.

PytanieGdzie szukać
Który punkt końcowy skonfigurowała aplikacja?Konfiguracja przekazana uchwytowi
Czy do tego transferu użyto proxy?Informacje o transferze, tam gdzie są obsługiwane
Który adres publiczny zobaczyła witryna?Obserwacja w tym miejscu docelowym

Trzymaj wybrany punkt końcowy obok uchwytu lub obiektu żądania. curl_getinfo to interfejs informacji o transferze, a nie ogólny getter każdej wcześniej przypisanej wartości CURLOPT. Zachowanie konfiguracji aplikacji jest prostsze niż próba przechwycenia wywołań curl_setopt.

Sprawdź ukończony transfer

Po transferze połączony peer jest dostępny przez CURLINFO_PRIMARY_IP. Gdy pierwsze połączenie idzie do proxy, tym peerem może być adres proxy, a nie adres witryny.

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

CURLINFO_USED_PROXY dodano do libcurl w wersji 8.7.0 i udostępniają go zgodne kompilacje PHP. Wynik informuje o użyciu proxy, a nie o pełnym URL wybranego proxy. Jeśli stała jest niedostępna, null powyżej oznacza, że obserwacja jest niedostępna, a nie że żądanie poszło bezpośrednio.

Czytaj te wartości, dopóki uchwyt nadal opisuje daną operację. Nieudane połączenie może nie dać użytecznego adresu peera, a jawne proxy nadal może zostać ominięte przez obowiązujące wykluczenie.

Punkt końcowy do sprawdzania IP odpowiada na trzecie pytanie. Jego odpowiedź może opisać wyjście za proxy, podczas gdy skonfigurowana nazwa hosta rozwiązuje się na inne wejście. Żadnego z adresów nie należy zastępować drugim w ustawieniach aplikacji.

Powiązane artykuły