urllib3 ProxyManager: proxy_headers로 Basic 자격 증명 보내기
ProxyManager.proxy_headers를 통해 Basic 프록시 자격 증명을 제공하여 대상 헤더가 되지 않고 HTTPS CONNECT 중에 사용할 수 있게 합니다.
ProxyManager에는 중간자에게 보내는 헤더를 위한 별도의 proxy_headers 인자가 있습니다. Basic 인증을 받아들이는 프록시의 경우:
import urllib3
proxy_headers = urllib3.make_headers(
proxy_basic_auth=f'{proxy_user}:{proxy_password}'
)
with urllib3.ProxyManager(
'http://proxy.example:8080',
proxy_headers=proxy_headers,
timeout=urllib3.Timeout(connect=5, read=10),
) as http:
response = http.request('GET', 'https://service.example/data')
print(response.status)
일반 HTTP 대상에서는 이 헤더가 전달된 요청과 함께 프록시로 이동합니다. CONNECT를 사용하는 HTTPS 대상에서는 각 암호화된 웹사이트 요청이 아니라 터널 설정에 속합니다.
일반 headers 인자는 대상 요청 헤더를 설명합니다. 이 프록시 인증은 다른 수신자에게 속합니다. 프록시 계정을 그곳에 두는 것은 앞선 CONNECT 교환을 구성하는 것과 같지 않습니다.
make_headers는 Basic 헤더 값을 만듭니다. NTLM을 협상하지 않고, 지원되는 방식을 자동으로 선택하지 않으며, 프록시가 그 계정을 받아들인다는 것도 증명하지 않습니다.
TLS 리스너가 있는 프록시는 별도의 프록시 TLS 컨텍스트를 추가합니다. 위의 http:// 엔드포인트는 터널을 통해 HTTPS 대상을 운반하는 일반 HTTP 리스너를 의도적으로 설명합니다.