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.

Artigos relacionados