Python urllib: osnovna proxy autentifikacija za HTTP zahtjeve
Napravite eksplicitni urllib opener za Basic izazov HTTP proxyja i razlikujte tu običnu HTTP razmjenu od HTTPS CONNECT autentifikacije.
Za Basic izazov s HTTP proxyja koristite ProxyBasicAuthHandler. Ovaj obični HTTP primjer drži rutu i račun 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 račun koji je dao operator. Ovaj obrađivač koristi upravitelja lozinki za izazov proxyja; uskladite predviđeni proxy URI i realm. Basic autentifikacija na odredištu koristi drugi obrađivač.
Pozivanje openera izravno drži ovo podešavanje lokalnim. URL zahtjeva ostaje web-mjesto, a ne posrednik. Ova otvorena HTTP ruta ne šifrira Basic razmjenu.
Ne zaključujte iz ovog primjera da je HTTPS tunel podržan. 407 tokom CONNECT nastaje pri postavljanju, prije običnog odgovora odredišta; odabrana integracija mora tu obraditi autentifikaciju. Promjena obrađivača za prijavu na web stranici ne može popraviti taj raniji izazov.
Proxy URL-ovi koji nose vjerodajnice drugi su format koji se nalazi u starijim primjerima. Ako ih koristite, ispravno kodirajte razdjelnike URL-a i držite dobijeni URL s tajnom izvan zapisa.