urllib3 ProxyManager: wysyłanie danych Basic w proxy_headers
Podaj dane uwierzytelniające Basic serwera proxy przez ProxyManager.proxy_headers, aby były dostępne podczas HTTPS CONNECT i nie stały się nagłówkami celu.
ProxyManager ma osobny argument proxy_headers dla nagłówków wysyłanych do pośrednika. Dla serwera proxy akceptującego uwierzytelnianie 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)
Dla zwykłego celu HTTP te nagłówki podróżują z przekazanym żądaniem do serwera proxy. Dla celu HTTPS przez CONNECT należą do konfiguracji tunelu, a nie do każdego szyfrowanego żądania witryny.
Zwykły argument headers opisuje nagłówki żądania do celu. To uwierzytelnianie proxy należy do innego odbiorcy. Umieszczenie tam konta proxy nie jest równoznaczne ze skonfigurowaniem wcześniejszej wymiany CONNECT.
make_headers buduje wartość nagłówka Basic. Nie negocjuje NTLM, nie wybiera automatycznie obsługiwanego schematu i nie dowodzi, że serwer proxy akceptuje to konto.
Serwer proxy z nasłuchiwaczem TLS dodaje osobny kontekst TLS proxy. Powyższy punkt końcowy http:// celowo opisuje zwykły nasłuchiwacz HTTP przenoszący cel HTTPS przez tunel.