파일에서 프록시 하나를 고른 다음 사이트 요청용 경로 맵을 구성합니다. 후보 엔드포인트의 풀은 그 자체로 Requests의 라우팅 사전이 아닙니다.

  1. 정해진 형식에 따라 항목을 파싱합니다. 비공식 IP:port:user:password 줄은 IPv6 주소나 자격 증명에 콜론이 들어가면 모호해집니다. IPv4 호스트, 숫자 포트, 콜론이 없는 사용자 이름이라면 제한적으로 나눌 때 남은 텍스트를 비밀번호로 둘 수 있습니다. 이런 제한이 맞지 않으면 별도의 구조화된 필드를 사용하세요.
  2. 이 작업에 사용할 엔드포인트를 고릅니다. 실제 프로토콜을 유지하고 URL을 만들 때 자격 증명 구성 요소를 인코딩합니다. 비밀을 담은 그 값은 일반 로그에 남기지 마세요.
  3. 목적지 스킴을 그 선택한 URL에 매핑합니다. 선택한 HTTP 프록시 하나에 대해 맵은 다음과 같을 수 있습니다.
routes = {
    'http': selected_proxy_url,
    'https': selected_proxy_url,
}

http 와 https 키는 목적지 스킴을 선택합니다. http://203.0.113.10 같은 키는 대신 바로 그 목적지 호스트로 가는 요청을 선택합니다. 그 주소의 프록시에 이름표를 붙이는 것이 아닙니다. 모든 프록시 IP를 키로 쓰면 무관한 사이트가 의도한 경로를 잃을 수 있습니다.

풀을 한 번 파싱하고 엔드포인트를 고른 뒤 클라이언트 호출용 매핑을 만듭니다. 이 단계를 분리해 두면 Requests의 라우팅 키 의미를 바꾸지 않고 선택 정책을 바꿀 수 있습니다.

관련 글