En proxyert GET kan nå en server og deretter følge omdirigeringer til den endelige feilen skjuler det første svaret. Eksponer dette innledende 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 offentlig side-test leverer HTTP-proxylisten kandidater for forespørselens proxy-URL. inspect_redirect bør registrere svarstatusen og Location-headeren i stedet for å 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 ulike middleware-ansvar.

Kontroller hva omdirigeringen velger: en tiltenkt kanonisk URL, et annet scheme eller vertsnavn, en innloggingsside eller en gjentatt syklus. En 302 mottatt etter vellykket transport er en annen observasjon enn å mislykkes med å åpne proxyforbindelsen.

Når normal omdirigeringshåndtering er gjenopprettet, eksponerer Scrapy redirect_urls og redirect_reasons i svarets forespørselsmetadata. Disse kan bevare veien til et endelig resultat uten å la omdirigeringer være deaktivert under hele crawl.

Et endelig svar er ikke automatisk siden applikasjonen hadde til hensikt. Behold destinasjonen og svarinnholdet sammen med rutingsdiagnosen.

Relaterte artikler