En proxyert GET kan nå en server og deretter følge omdirigeringer helt til den endelige feilen skjuler det første svaret. Eksponer dette første svaret for diagnostikk:

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],
    },
)

Planlegg denne forespørselen gjennom edderkoppens eksisterende start- eller callback-flyt. For en tillatt test av en offentlig side leverer HTTP-proxylisten kandidater for proxy-URL-en til forespørselen. inspect_redirect bør registrere svarstatusen og Location-headeren framfor å følge den igjen i blinde.

dont_redirect stopper automatisk omdirigering for denne forespørselen. handle_httpstatus_list lar de navngitte statusene nå callbacken i stedet for å bli avvist av HTTP-feilfiltrering. Innstillingene gjelder forskjellige middleware-ansvar.

Kontroller hva omdirigeringen velger: en tiltenkt kanonisk URL, et annet scheme eller vertsnavn, en innloggingsside eller en syklus som gjentar seg. En 302 som mottas etter vellykket transport, er en annen observasjon enn å ikke få åpnet proxyforbindelsen.

Når normal håndtering av omdirigeringer er gjenopprettet, eksponerer Scrapy redirect_urls og redirect_reasons i forespørselsmetadataen til svaret. Disse kan bevare veien til et endelig resultat uten å la omdirigeringer være deaktivert gjennom hele crawl.

Et endelig svar er ikke automatisk siden applikasjonen hadde til hensikt. Ta vare på destinasjonen og svarinnholdet sammen med rutingsdiagnosen.

Relaterte artikler