Scrapy에서 ProxyMesh의 종료 헤더가 사라질 수 있는 이유
ProxyMesh는 Scrapy가 암호화된 웹사이트 응답을 받기 전에 CONNECT에서 라우팅 메타데이터를 보낼 수 있습니다. 실제로 이를 전달하는 응답 단계를 확인하세요.
Scrapy HTTPS 콜백에 X-ProxyMesh-IP이 없다고 해서 직접 라우팅이 증명되지는 않습니다. 터널링된 HTTPS에서 ProxyMesh는 라우팅 헤더를 CONNECT 응답에 배치합니다. 나중에 오는 웹사이트 응답은 TLS 내부에 있으므로 그 이전 메타데이터를 자동으로 포함하지 않습니다.
콜백에서 헤더가 노출되는 곳에서는 조건부로 읽으세요:
exit_ip = response.headers.get(b'X-ProxyMesh-IP')
if exit_ip is not None:
self.logger.info('Reported exit IP: %s', exit_ip.decode('ascii'))
이것은 해당 거래에 대해 공급자가 보고한 종료 주소이며, 설정된 진입 호스트 이름이 아닙니다.
터널 메타데이터가 필요하면 CONNECT 헤더를 노출하는 호환 핸들러 통합을 사용하세요. ProxyMesh는 이 목적을 위해 하나를 유지합니다. 지원되는 Scrapy 버전과 다운로드 핸들러를 확인하세요. 스파이더 파싱은 전송 계층이 제공하지 않은 헤더를 드러낼 수 없습니다.
메타데이터를 해당 연결과 연결하세요. 터널을 재사용해도 페이지마다 또 다른 CONNECT 응답이 생기지는 않습니다. 목적지가 관찰하는 독립적인 소스 주소를 확인하려면 공급자 헤더를 보편적인 IP 탐지기로 취급하지 말고 해당 목적지의 수신 연결을 조사하세요.