Python urllib: Slå av proxyar for éin opener
Lag ein urllib-opener med direkte samband via ProxyHandler({}), utan å endre andre klientar eller prosessmiljøet.
Gje ProxyHandler ei tom mapping når éin urllib-opener skal kople til direkte:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
Den tomme ordboka oppgjev ingen proxyruter. Utelèt du mappinga, finn handsamaren i staden proxyar frå miljøet og plattforminnstillingane. Desse to konstruksjonane uttrykkjer ulike retningslinjer.
Dømet nyttar standardbiblioteket til Python og held på vanleg HTTPS-verifisering. with-blokka lukkar svaret, òg når eit unntak fører til at blokka vert forlaten.
Direkte førespurnader og førespurnader via proxy i same applikasjon
To openarar kan ha kvar si retningslinje utan å endre miljøvariablar mellom kall:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}))
with proxied.open("https://example.com/", timeout=10) as response:
print(response.status)
Byt ut loopback-adressa med din HTTP-proxy, eller vel ein kandidat frå lista over HTTP-proxyar til samanlikninga via proxy. Han kan føre sambandet til HTTPS-målet gjennom CONNECT når tenesta tillèt det. Protokollen og autentiseringsstøtta til lyttepunktet må passe til handsamaren.
Lat standardopenaren vere
Kall direct.open eller proxied.open gjennom objektet som har ansvaret for ruta. install_opener endrar standarden for heile prosessen som hjelpefunksjonane i urllib nyttar; eit bibliotek som nyttar han, kan difor påverke uvedkomande kode. Han er unødvendig for den isolerte openaren ovanfor.
Argumentet timeout er ei innstilling for ein operasjon, ikkje ein fullstendig frist målt i faktisk tid for kvar overføring. Les berre naudsynte data, og nytt ein frist på eit høgare nivå dersom oppgåva har eit strengt samla tidsbudsjett.
Desse opener-objekta endrar ikkje klienten til eit anna bibliotek, ein eksisterande prosess eller proxyinnstillingane til ein nettlesar.