ProxyManager dispone di un argomento separato proxy_headers per le intestazioni inviate all'intermediario. Per un proxy che accetta l'autenticazione 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)

Per una destinazione HTTP semplice, queste intestazioni viaggiano con la richiesta inoltrata verso il proxy. Per una destinazione HTTPS con CONNECT appartengono alla configurazione del tunnel e non a ogni richiesta cifrata al sito web.

Il normale argomento headers descrive le intestazioni della richiesta di destinazione. Questa autenticazione proxy appartiene a un altro destinatario. Mettere lì l'account del proxy non equivale a configurare il precedente scambio CONNECT.

make_headers costruisce il valore dell'intestazione Basic. Non negozia NTLM, non seleziona automaticamente uno schema supportato e non dimostra che il proxy accetti quell'account.

Un proxy con un listener TLS aggiunge un contesto TLS del proxy separato. L'endpoint http:// sopra descrive deliberatamente un listener HTTP ordinario che trasporta una destinazione HTTPS attraverso un tunnel.

Articoli correlati