Scrapy 프록시 엔드포인트와 연결 IP 읽기
선택된 프록시에는 요청 메타데이터를 사용하고, response.ip_address는 핸들러가 제공하는 피어 정보로 다루며, 목적지에서 출구 IP를 확인하세요.
완료된 응답에 연결된 Request를 사용해 선택된 경로를 살펴봅니다. 세 가지 관찰은 구분해 두세요.
| 필드 | 의미 |
|---|---|
response.request.meta.get('proxy') | 이 요청에서 선택된 프록시 URL(있는 경우) |
response.ip_address | 다운로드 핸들러가 제공하는 주소, None일 수 있습니다 |
| 신뢰할 수 있는 목적지의 출처 보고 | 그곳에서 관측된 공개 출처 |
콜백 안에서는 자격 증명이 포함된 URL 부분을 일상 진단에서 제외합니다.
from urllib.parse import urlsplit
proxy = response.request.meta.get('proxy')
proxy_host = urlsplit(proxy).hostname if proxy else None
self.logger.info(
'target_host=%s proxy_host=%s peer_ip=%s',
urlsplit(response.url).hostname, proxy_host, response.ip_address,
)Scrapy 2.13.3의 HTTP/1.1 핸들러에서 주소는 응답 연결의 피어에서 오며 출구 IP 서비스에서 오지 않습니다. 길이가 0인 응답을 포함한 일부 경로는 이를 None으로 남길 수 있습니다. 다른 핸들러는 다르게 채울 수 있습니다. None만으로는 직접 라우팅을 증명하지 못합니다.
출구 확인에는 의도한 프록시 정책 아래에서 신뢰할 수 있는 엔드포인트에 질의하고 요청의 동일성을 관찰과 함께 보관합니다. 순환 미들웨어는 이후 확인에 다른 엔드포인트를 줄 수 있습니다.
리다이렉트도 또 다른 요청을 만듭니다. 최종 메타데이터는 그 단계를 설명하므로, 첫 URL의 경로에 대한 증거로 삼지 말고 리다이렉트 이력과 미들웨어의 재선택을 확인하세요.