Scrapy gali parodyti peradresavimą prieš jį sekdama
Laikinai atskleiskite proksiuojamo GET pradinę peradresavimo būseną ir Location užklausos metaduomenyse, laikydami peradresavimų apdorojimą atskirai nuo HTTP klaidų filtravimo.
Proksiuojamas GET gali pasiekti serverį ir tada sekti peradresavimus, kol galutinė klaida paslepia pirmąjį atsakymą. Atskleiskite tą pradinį atsakymą diagnostikai:
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],
},
)
Suplanuokite šią užklausą per esamą voragyvio paleidimo arba callback srautą. Leidžiamam viešo puslapio patikrinimui HTTP proxy sąrašas siūlo kandidatus užklausos proxy URL. inspect_redirect turėtų įrašyti atsakymo būseną ir Location antraštę, o ne vėl aklai jį sekti.
dont_redirect sustabdo automatinį peradresavimą šiai užklausai. handle_httpstatus_list leidžia nurodytoms būsenoms pasiekti callback, o ne būti atmestoms HTTP klaidų filtravimo. Šie nustatymai susiję su skirtingomis middleware atsakomybėmis.
Patikrinkite, ką peradresavimas pasirenka: numatytą kanoninį URL, kitą schemą arba prieglobos vardą, prisijungimo puslapį ar pasikartojantį ciklą. 302, gautas po sėkmingo perdavimo, yra kitas stebėjimas nei nesugebėjimas atidaryti proxy ryšio.
Atkūrus įprastą peradresavimų apdorojimą, Scrapy atskleidžia redirect_urls ir redirect_reasons atsakymo užklausos metaduomenyse. Jie gali išsaugoti kelią iki galutinio rezultato nepalikdami peradresavimų išjungtų viso nuskaitymo metu.
Galutinis atsakymas nebūtinai yra puslapis, kurį programa turėjo omenyje. Išsaugokite paskirties vietą ir atsakymo turinį kartu su maršrutizavimo diagnostika.