Scrapy pode mostrar a redirección antes de seguila
Expón temporalmente o estado de redirección inicial e a cabeceira Location dunha GET con proxy mediante os metadatos da petición, mantendo o tratamento das redireccións separado do filtrado de erros HTTP.
Unha GET con proxy pode chegar a un servidor e despois seguir redireccións ata que o fallo final oculta a primeira resposta. Expón esa resposta inicial para o diagnóstico:
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],
},
)
Programa esta petición mediante o fluxo de inicio ou callback existente da araña. Para unha proba permitida de páxina pública, a lista de proxies HTTP fornece candidatos para o URL de proxy da petición. inspect_redirect debería rexistrar o estado da resposta e a cabeceira Location en lugar de volver seguila ás cegas.
dont_redirect detén a redirección automática para esta petición. handle_httpstatus_list permite que os estados indicados cheguen ao callback en lugar de ser rexeitados polo filtrado de erros HTTP. Os axustes abordan responsabilidades distintas do middleware.
Comproba que selecciona a redirección: un URL canónico previsto, un esquema ou nome de host diferente, unha páxina de inicio de sesión ou un ciclo repetido. Un 302 recibido tras un transporte correcto é unha observación distinta de non poder abrir a conexión de proxy.
Cando se restaura o tratamento normal das redireccións, Scrapy expón redirect_urls e redirect_reasons nos metadatos da petición da resposta. Estes poden conservar o camiño cara a un resultado final sen deixar as redireccións desactivadas durante todo o rastrexo.
Unha resposta final non é automaticamente a páxina que a aplicación pretendía. Conserva o destino e o contido da resposta xunto co diagnóstico de enrutamento.