Scrapy kan visa omdirigeringen innan den följs
Exponera tillfälligt en proxad GET-begärans inledande omdirigeringsstatus och Location via begäransmetadata, och håll omdirigeringshanteringen skild från HTTP-felfiltrering.
En proxad GET kan nå en server och sedan följa omdirigeringar tills det slutliga felet döljer det första svaret. Exponera det inledande svaret för diagnostik:
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],
},
)
Schemalägg denna begäran genom spindelns befintliga start- eller callbackflöde. För en tillåten kontroll av en offentlig sida levererar HTTP-proxylistan kandidater för begärans proxy-URL. inspect_redirect bör registrera svarsstatusen och Location-huvudet i stället för att följa det igen blint.
dont_redirect stoppar automatisk omdirigering för denna begäran. handle_httpstatus_list låter de namngivna statusarna nå callbacken i stället för att avvisas av HTTP-felfiltrering. Inställningarna gäller olika middleware-ansvar.
Kontrollera vad omdirigeringen väljer: en avsedd kanonisk URL, ett annat schema eller värdnamn, en inloggningssida eller en återkommande cykel. En 302 som tas emot efter lyckad transport är en annan observation än att misslyckas med att öppna proxyanslutningen.
När normal omdirigeringshantering återställs exponerar Scrapy redirect_urls och redirect_reasons i svarets begäransmetadata. Dessa kan bevara vägen till ett slutresultat utan att lämna omdirigeringar inaktiverade under hela crawlen.
Ett slutligt svar är inte automatiskt den sida som applikationen avsåg. Behåll destinationen och svarsinnehållet tillsammans med routingdiagnosen.