urllib3 ProxyManager: Basic duomenų siuntimas proxy_headers
Pateikite Basic tarpinio serverio duomenis per ProxyManager.proxy_headers, kad jie būtų pasiekiami HTTPS CONNECT metu ir netaptų tikslo antraštėmis.
ProxyManager turi atskirą argumentą proxy_headers tarpininkui siunčiamoms antraštėms. Tarpiniam serveriui, kuris priima Basic autentifikaciją:
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)
Paprastam HTTP tikslui šios antraštės keliauja kartu su persiunčiama užklausa į tarpinį serverį. HTTPS tikslui per CONNECT jos priklauso tunelio sąrankai, o ne kiekvienai užšifruotai svetainės užklausai.
Įprastas headers argumentas aprašo tikslo užklausos antraštes. Ši tarpinio serverio autentifikacija priklauso kitam gavėjui. Tarpinio serverio paskyros įrašymas ten nelygus ankstesnio CONNECT mainų konfigūravimui.
make_headers sudaro Basic antraštės reikšmę. Jis nesidera dėl NTLM, automatiškai nepasirenka palaikomos schemos ir neįrodo, kad tarpinis serveris priima tą paskyrą.
Tarpinis serveris su TLS klausytuvu prideda atskirą tarpinio serverio TLS kontekstą. Aukščiau nurodytas http:// galutinis taškas sąmoningai aprašo įprastą HTTP klausytuvą, kuris per tunelį perduoda HTTPS tikslą.