Scrapy può mostrare il reindirizzamento prima di seguirlo
Esponi temporaneamente lo stato di reindirizzamento iniziale e l'intestazione Location di una GET con proxy tramite i metadati della richiesta, mantenendo la gestione dei reindirizzamenti separata dal filtro degli errori HTTP.
Una GET con proxy può raggiungere un server e poi seguire i reindirizzamenti finché il fallimento finale non nasconde la prima risposta. Esponi quella risposta iniziale per la diagnosi:
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],
},
)
Programma questa richiesta tramite il flusso di avvio o callback esistente del ragno. Per una verifica consentita di una pagina pubblica, la lista di proxy HTTP fornisce candidati per l'URL del proxy della richiesta. inspect_redirect dovrebbe registrare lo stato della risposta e l'intestazione Location invece di seguirla di nuovo ciecamente.
dont_redirect interrompe il reindirizzamento automatico per questa richiesta. handle_httpstatus_list lascia che gli stati indicati raggiungano il callback invece di essere rifiutati dal filtro degli errori HTTP. Le impostazioni riguardano responsabilità diverse del middleware.
Verifica cosa seleziona il reindirizzamento: un URL canonico previsto, uno schema o un nome host diverso, una pagina di accesso o un ciclo ripetuto. Un 302 ricevuto dopo un trasporto riuscito è un'osservazione diversa dal non riuscire ad aprire la connessione proxy.
Quando la normale gestione dei reindirizzamenti viene ripristinata, Scrapy espone redirect_urls e redirect_reasons nei metadati della richiesta della risposta. Questi possono conservare il percorso verso un risultato finale senza lasciare i reindirizzamenti disattivati per l'intera scansione.
Una risposta finale non è automaticamente la pagina che l'applicazione intendeva. Conserva la destinazione e il contenuto della risposta insieme alla diagnosi di instradamento.