urllib3 ProxyManager: Basic kimlik bilgilerini proxy_headers içinde gönderme
Basic proxy kimlik bilgilerini ProxyManager.proxy_headers üzerinden sağlayın; böylece HTTPS CONNECT sırasında kullanılabilir olsunlar ve hedef başlıklarına dönüşmesinler.
ProxyManager, aracıya gönderilen başlıklar için ayrı bir proxy_headers argümanına sahiptir. Basic authentication kabul eden bir proxy için:
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)
Düz HTTP hedefi için bu başlıklar iletilen istekle birlikte proxy'ye gider. CONNECT kullanan HTTPS hedefi için bunlar her şifreli web sitesi isteğine değil, tünel kurulumuna aittir.
Olağan headers argümanı hedef istek başlıklarını tanımlar. Bu proxy authentication farklı bir alıcıya aittir. Proxy'nin hesabını oraya koymak, önceki CONNECT alışverişini yapılandırmakla eşdeğer değildir.
make_headers Basic başlık değerini oluşturur. NTLM pazarlığı yapmaz, desteklenen bir şemayı otomatik seçmez ve proxy'nin bu hesabı kabul ettiğini kanıtlamaz.
TLS listener'ı olan bir proxy ayrı bir proxy TLS context ekler. Yukarıdaki http:// uç noktası, bir HTTPS hedefini tünel üzerinden taşıyan sıradan bir HTTP listener'ı bilinçli olarak tanımlar.