Scrapy dokáže zobraziť presmerovanie skôr, než ho nasleduje
Dočasne vystavte počiatočný stav presmerovania a hlavičku Location proxy GET požiadavky prostredníctvom metadát požiadavky a ponechajte spracovanie presmerovaní oddelené od filtrovania HTTP chýb.
Proxy GET môže dosiahnuť server a potom nasledovať presmerovania, kým konečné zlyhanie nezakryje prvú odpoveď. Vystavte túto počiatočnú odpoveď pre diagnostiku:
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],
},
)
Naplánujte túto požiadavku existujúcim tokom spustenia alebo callbacku pavúka. Pre povolenú kontrolu verejnej stránky zoznam HTTP proxy poskytuje kandidátov pre proxy URL požiadavky. inspect_redirect má zaznamenať stav odpovede a hlavičku Location namiesto toho, aby ju znova naslepo nasledoval.
dont_redirect zastaví automatické presmerovanie pre túto požiadavku. handle_httpstatus_list umožní uvedeným stavom dostať sa do callbacku namiesto toho, aby ich odmietlo filtrovanie HTTP chýb. Nastavenia sa týkajú rôznych zodpovedností middleware.
Skontrolujte, čo presmerovanie vyberá: zamýšľanú kanonickú URL, inú schému alebo názov hostiteľa, prihlasovaciu stránku alebo opakujúci sa cyklus. 302 prijaté po úspešnom prenose je iné pozorovanie než zlyhanie otvorenia proxy spojenia.
Keď sa obnoví bežné spracovanie presmerovaní, Scrapy vystaví redirect_urls a redirect_reasons v metadátach požiadavky odpovede. Môžu zachovať cestu ku konečnému výsledku bez toho, aby presmerovania zostali vypnuté počas celého prehľadávania.
Konečná odpoveď nie je automaticky stránka, ktorú aplikácia zamýšľala. Uchovávajte cieľ a obsah odpovede spolu s diagnostikou smerovania.