Którego proxy użyło to żądanie PHP cURL?
Odróżnij skonfigurowane proxy, połączonego peera i publiczne wyjście widziane przez cel.
„Pobierz proxy” może w aplikacji PHP cURL oznaczać trzy różne rzeczy. Zdecyduj, jakiej obserwacji potrzebujesz, zanim dodasz kolejne żądanie.
| Pytanie | Gdzie 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.