O Scrapy pode mostrar o redirecionamento antes de segui-lo
Exponha temporariamente o estado de redirecionamento inicial e o cabeçalho Location de um GET via proxy pelos metadados da requisição, mantendo o tratamento de redirecionamentos separado da filtragem de erros HTTP.
Um GET via proxy pode chegar a um servidor e então seguir redirecionamentos até que a falha final oculte a primeira resposta. Exponha essa resposta inicial para 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],
},
)
Agende esta requisição pelo fluxo de início ou callback existente da aranha. Para uma verificação permitida de página pública, a lista de proxies HTTP fornece candidatos para a URL de proxy da requisição. inspect_redirect deve registrar o status da resposta e o cabeçalho Location em vez de segui-la novamente às cegas.
dont_redirect interrompe o redirecionamento automático para esta requisição. handle_httpstatus_list permite que os status nomeados cheguem ao callback em vez de serem rejeitados pela filtragem de erros HTTP. As configurações tratam de responsabilidades diferentes do middleware.
Verifique o que o redirecionamento seleciona: uma URL canônica pretendida, um esquema ou nome de host diferente, uma página de login ou um ciclo repetido. Um 302 recebido após transporte bem-sucedido é uma observação diferente de não conseguir abrir a conexão de proxy.
Quando o tratamento normal de redirecionamentos é restaurado, o Scrapy expõe redirect_urls e redirect_reasons nos metadados da requisição da resposta. Eles podem preservar o caminho até um resultado final sem deixar os redirecionamentos desativados durante todo o rastreamento.
Uma resposta final não é automaticamente a página que a aplicação pretendia. Mantenha o destino e o conteúdo da resposta junto com o diagnóstico de roteamento.