Żądanie GET przez proxy może dotrzeć do serwera, a następnie podążać za przekierowaniami, aż końcowy błąd zasłoni pierwszą odpowiedź. Ujawnij tę pierwszą odpowiedź do diagnostyki:

request = scrapy.Request(
    'https://service.example/page',
    callback=inspect_redirect,
    meta={
        'proxy': 'http://proxy.example:8080',
        'dont_redirect': True,
        'handle_httpstatus_list': [301, 302, 303, 307, 308],
    },
)

Zaplanuj to żądanie w istniejącym przepływie startowym lub callback pająka. W przypadku dozwolonego sprawdzenia publicznej strony lista proxy HTTP dostarcza kandydatów do adresu URL proxy żądania. inspect_redirect powinien zapisać status odpowiedzi i nagłówek Location zamiast ponownie podążać za nim na ślepo.

dont_redirect zatrzymuje automatyczne przekierowanie dla tego żądania. handle_httpstatus_list pozwala wymienionym statusom dotrzeć do callbacku zamiast zostać odrzuconym przez filtrowanie błędów HTTP. Ustawienia dotyczą różnych obowiązków middleware.

Sprawdź, co wybiera przekierowanie: zamierzony kanoniczny URL, inny schemat lub nazwa hosta, strona logowania albo powtarzający się cykl. Otrzymane 302 po udanym transporcie to inna obserwacja niż niepowodzenie otwarcia połączenia proxy.

Po przywróceniu normalnej obsługi przekierowań Scrapy ujawnia redirect_urls i redirect_reasons w metadanych żądania odpowiedzi. Mogą one zachować ścieżkę do końcowego wyniku bez pozostawiania przekierowań wyłączonych przez cały crawl.

Końcowa odpowiedź nie jest automatycznie stroną, którą zamierzała aplikacja. Zachowaj miejsce docelowe i treść odpowiedzi wraz z diagnostyką routingu.

Powiązane artykuły