Python urllib: osnovna autentifikacija proksija za HTTP zahteve
Napravite eksplicitni urllib opener za Basic izazov HTTP proksija i razlikujte tu običnu HTTP razmenu od HTTPS CONNECT autentifikacije.
Za Basic izazov sa HTTP proksija koristite ProxyBasicAuthHandler. Ovaj obični HTTP primer drži rutu i nalog u jednom openeru:
import os
from urllib.request import (
ProxyHandler, ProxyBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener,
)
proxy_url = 'http://proxy.example:8080'
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(
None, proxy_url,
os.environ['PROXY_USER'], os.environ['PROXY_PASSWORD'],
)
opener = build_opener(
ProxyHandler({'http': proxy_url}),
ProxyBasicAuthHandler(passwords),
)
with opener.open('http://example.com/', timeout=10) as response:
print(response.status)Koristite stvarni endpoint i nalog koji je dao operator. Ovaj rukovalac koristi upravljač lozinkama za izazov proksija; uskladite predviđeni proksi URI i realm. Basic autentifikacija na odredištu koristi drugi rukovalac.
Direktno pozivanje openera drži ovo podešavanje lokalnim. URL zahteva ostaje sajt, a ne posrednik. Ova otvorena HTTP ruta ne šifruje Basic razmenu.
Ne zaključujte iz ovog primera da je HTTPS tunel podržan. 407 tokom CONNECT nastaje pri postavljanju, pre običnog odgovora odredišta; izabrana integracija mora tu da obradi autentifikaciju. Promena rukovaoca za prijavu na sajtu ne može da popravi taj raniji izazov.
Proksi URL-ovi koji nose akreditive drugi su format koji se sreće u starijim primerima. Ako se koriste, ispravno kodirajte razdelnike URL-a i držite dobijeni URL sa tajnom izvan zapisa.