프록시 GET은 서버에 도달한 뒤 최종 실패가 첫 응답을 가릴 때까지 리디렉션을 따라갈 수 있습니다. 그 초기 응답을 진단을 위해 노출하세요:

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],
    },
)

이 요청은 스파이더의 기존 start 또는 callback 흐름으로 예약하세요. 허용된 공개 페이지 점검에서는 HTTP 프록시 목록 이 요청의 프록시 URL 후보를 제공합니다. inspect_redirect는 응답 상태와 Location 헤더를 기록해야 하며, 다시 무작정 따라가서는 안 됩니다.

dont_redirect는 이 요청의 자동 리디렉션을 중지합니다. handle_httpstatus_list는 지정한 상태가 HTTP 오류 필터링에 의해 거부되지 않고 callback에 도달하게 합니다. 이 설정들은 서로 다른 미들웨어 책임에 해당합니다.

리디렉션이 무엇을 선택하는지 확인하세요. 의도한 표준 URL, 다른 스킴이나 호스트 이름, 로그인 페이지, 또는 반복되는 순환입니다. 성공적인 전송 후 받은 302는 프록시 연결을 열지 못한 것과 다른 관찰입니다.

정상적인 리디렉션 처리가 복원되면 Scrapy는 응답의 요청 메타데이터에 redirect_urls와 redirect_reasons를 노출합니다. 이는 전체 크롤 동안 리디렉션을 비활성화한 채 두지 않고 최종 결과로 이어지는 경로를 보존할 수 있습니다.

최종 응답이 자동으로 애플리케이션이 의도한 페이지인 것은 아닙니다. 목적지와 응답 내용을 라우팅 진단과 함께 유지하세요.

관련 글