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.

Aiheeseen liittyvät artikkelit