Odczyt punktu końcowego proxy i IP połączenia w Scrapy
Użyj metadanych żądania dla wybranego proxy, traktuj response.ip_address jako informację o peercie dostarczoną przez handler i zweryfikuj wychodzący IP u celu.
Aby sprawdzić wybraną trasę, użyj Request powiązanego z zakończoną odpowiedzią. Trzymaj trzy obserwacje osobno:
| Pole | Znaczenie |
|---|---|
response.request.meta.get('proxy') | Wybrany URL proxy tego żądania, jeśli istnieje |
response.ip_address | Adres dostarczony przez handler pobierania, może być None |
| Raport źródła z zaufanego celu | Publiczne źródło zaobserwowane tam |
Wewnątrz callbacku pomiń części URL z danymi logowania w rutynowej diagnostyce:
from urllib.parse import urlsplit
proxy = response.request.meta.get('proxy')
proxy_host = urlsplit(proxy).hostname if proxy else None
self.logger.info(
'target_host=%s proxy_host=%s peer_ip=%s',
urlsplit(response.url).hostname, proxy_host, response.ip_address,
)W handlerze HTTP/1.1 w Scrapy 2.13.3 adres pochodzi od peera połączenia odpowiedzi, a nie z usługi wychodzącego IP. Niektóre ścieżki, w tym odpowiedzi o zerowej długości, mogą zostawić go jako None. Inne handlery mogą wypełniać go inaczej. None samo w sobie nie dowodzi bezpośredniego routingu.
Aby sprawdzić wyjście, zapytaj zaufany punkt końcowy zgodnie z zamierzoną polityką proxy i zachowaj tożsamość żądania wraz z obserwacją. Rotujące middleware może dać późniejszej kontroli inny punkt końcowy.
Przekierowania tworzą też kolejne żądanie. Końcowe metadane opisują ten etap; przejrzyj historię przekierowań i ewentualny ponowny wybór przez middleware, zamiast traktować to jako dowód trasy pierwszego URL.