Python urllib: poista välityspalvelimet käytöstä yhdeltä openerilta
Luo suoraan yhdistävä urllib-opener ProxyHandler({}):lla muuttamatta muita asiakkaita tai prosessin ympäristöä.
Anna ProxyHandlerille tyhjä kuvaus, kun yhden urllib-openerin pitää yhdistää suoraan:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
Tyhjä sanakirja ei määritä välityspalvelinreittejä. Jos jätät kuvauksen pois, käsittelijä löytää välityspalvelimet ympäristöstä ja alustan asetuksista. Nämä kaksi luontitapaa ilmaisevat eri toimintaperiaatteet.
Esimerkki käyttää Pythonin standardikirjastoa ja säilyttää normaalin HTTPS-varmennuksen. with-lohko sulkee vastauksen myös silloin, kun lohkosta poistutaan poikkeuksen vuoksi.
Suorat ja välityspalvelimen kautta kulkevat pyynnöt samassa sovelluksessa
Kaksi openeria voi toteuttaa kaksi toimintaperiaatetta ilman ympäristömuuttujien muuttamista kutsujen välillä:
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)
Korvaa takaisinkytkentäosoite omalla HTTP-välityspalvelimellasi tai valitse ehdokas HTTP-välityspalvelinten luettelosta välitetyn yhteyden vertailuun. Se voi kuljettaa yhteyden HTTPS-kohteeseen CONNECTin kautta, jos palvelu sallii sen. Kuuntelijan protokollan ja todennustuen on sovittava käsittelijään.
Jätä oletusopener rauhaan
Kutsu direct.open- tai proxied.open-metodia reitistä vastaavan olion kautta. install_opener muuttaa koko prosessin oletusta, jota urllibin apufunktiot käyttävät, joten sitä käyttävä kirjasto voi vaikuttaa asiaan kuulumattomaan koodiin. Yllä oleva erillinen opener ei tarvitse sitä.
timeout-argumentti on toiminnon asetus, ei jokaisen siirron koko todellista kestoa rajaava määräaika. Lue vain tarvittavat tiedot ja käytä ylemmän tason määräaikaa, jos työllä on tiukka kokonaisaikabudjetti.
Nämä opener-oliot eivät muuta toisen kirjaston asiakasta, olemassa olevaa prosessia tai selaimen välityspalvelinasetuksia.