Una GET con proxy puede llegar a un servidor y luego seguir redirecciones hasta que el fallo final oculte la primera respuesta. Expón esa respuesta inicial para el 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 el flujo de inicio o callback existente de la araña. Para una prueba permitida de página pública, la lista de proxies HTTP ofrece candidatos para la URL de proxy de la petición. inspect_redirect debería registrar el estado de la respuesta y la cabecera Location en lugar de volver a seguirla a ciegas.

dont_redirect detiene la redirección automática para esta petición. handle_httpstatus_list permite que los estados indicados lleguen al callback en lugar de ser rechazados por el filtrado de errores HTTP. Los ajustes abordan responsabilidades distintas del middleware.

Comprueba qué selecciona la redirección: una URL canónica prevista, un esquema o nombre de host diferente, una página de inicio de sesión o un ciclo repetido. Un 302 recibido tras un transporte correcto es una observación distinta de no poder abrir la conexión de proxy.

Cuando se restaura el tratamiento normal de redirecciones, Scrapy expone redirect_urls y redirect_reasons en los metadatos de la petición de la respuesta. Estos pueden conservar el camino hacia un resultado final sin dejar las redirecciones desactivadas durante todo el rastreo.

Una respuesta final no es automáticamente la página que la aplicación pretendía. Conserva el destino y el contenido de la respuesta junto con el diagnóstico de enrutamiento.

Artículos relacionados