Scrapy voi näyttää uudelleenohjauksen ennen sen seuraamista
Paljasta väliaikaisesti välityspalvelimen kautta tehdyn GET-pyynnön alkuperäinen uudelleenohjaustila ja Location pyynnön metatietojen kautta ja pidä uudelleenohjausten käsittely erillään HTTP-virheiden suodatuksesta.
Välityspalvelimen kautta tehty GET voi saavuttaa palvelimen ja seurata sitten uudelleenohjauksia, kunnes lopullinen virhe peittää ensimmäisen vastauksen. Paljasta tämä alkuperäinen vastaus diagnosointia varten:
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],
},
)
Ajoita tämä pyyntö hämähäkin olemassa olevalla käynnistys- tai callback-virralla. Sallittua julkisen sivun koetta varten HTTP-välityspalvelinluettelo tarjoaa ehdokkaita pyynnön välityspalvelimen URL-osoitteelle. inspect_redirectin tulisi tallentaa vastauksen tila ja Location-otsake sen sijaan, että seuraisi sitä uudelleen sokkona.
dont_redirect pysäyttää automaattisen uudelleenohjauksen tälle pyynnölle. handle_httpstatus_list sallii nimettyjen tilojen päästä callbackiin sen sijaan, että HTTP-virheiden suodatus hylkäisi ne. Asetukset koskevat middlewaren eri vastuita.
Tarkista, mihin uudelleenohjaus valitsee: aiottu kanoninen URL, eri skeema tai isäntänimi, kirjautumissivu tai toistuva sykli. Onnistuneen siirron jälkeen saatu 302 on eri havainto kuin välityspalvelinyhteyden avaamisen epäonnistuminen.
Kun tavallinen uudelleenohjausten käsittely palautetaan, Scrapy näyttää redirect_urls- ja redirect_reasons-kentät vastauksen pyyntömetatiedoissa. Ne voivat säilyttää polun lopputulokseen jättämättä uudelleenohjauksia pois päältä koko ryöminnän ajaksi.
Lopullinen vastaus ei ole automaattisesti se sivu, jonka sovellus aikoi. Säilytä kohde ja vastauksen sisältö reitityksen diagnoosin kanssa.