urllib3 ProxyManager: изпращане на Basic данни в proxy_headers
Подавайте Basic прокси данни чрез ProxyManager.proxy_headers, за да са налични при 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 дестинация тези заглавки пътуват с препратената заявка до прокси сървъра. При HTTPS дестинация чрез CONNECT те принадлежат към изграждането на тунела, а не към всяка заявка към криптирания сайт.
Обикновеният аргумент headers описва заглавките на заявката към дестинацията. Това удостоверяване на прокси принадлежи на друг получател. Поставянето на прокси акаунта там не е равностойно на настройване на предишния CONNECT обмен.
make_headers изгражда стойността на Basic заглавката. Той не договаря NTLM, не избира автоматично поддържана схема и не доказва, че прокси сървърът приема този акаунт.
Прокси с TLS слушател добавя отделен TLS контекст за прокси. Адресът http:// по-горе умишлено описва обикновен HTTP слушател, пренасящ HTTPS дестинация през тунел.