Python urllib: keela puhverserverid ühe opener’i jaoks
Loo ProxyHandler({}) abil otse ühenduv urllib-opener, muutmata teisi kliente ja protsessi keskkonda.
Anna ProxyHandler-ile tühi vastendus, kui üks urllib-opener peab ühenduma otse:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
Tühi sõnastik ei määra ühtegi puhverserveri marsruuti. Vastenduse ärajätmisel tuvastab käitleja puhverserverid hoopis keskkonna ja platvormi seadetest. Need kaks loomise viisi väljendavad eri põhimõtteid.
Näide kasutab Pythoni standardteeki ja säilitab tavapärase HTTPS-i kontrolli. with-plokk sulgeb vastuse ka siis, kui plokist lahkutakse erindi tõttu.
Otsepäringud ja puhverserveriga päringud samas rakenduses
Kaks opener’it võivad kanda eri põhimõtteid, ilma et peaksid kutsete vahel keskkonnamuutujaid muutma:
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)
Asenda tagasisideaadress oma HTTP-puhverserveriga või vali puhverserveri kaudu võrdlemiseks kandidaat HTTP-puhverserverite loendist. See võib kanda HTTPS-sihtkoha ühendust CONNECT-i kaudu, kui teenus seda lubab. Kuulava teenuse protokoll ja autentimise tugi peavad käitlejaga sobima.
Jäta vaikimisi opener puutumata
Kutsu direct.open või proxied.open välja selle objekti kaudu, mis vastutab marsruudi eest. install_opener muudab kogu protsessi vaikimisi opener’it, mida kasutavad urllib-i mugavusfunktsioonid; seda kasutav teek võib seetõttu mõjutada asjassepuutumatut koodi. Ülaltoodud eraldatud opener seda ei vaja.
Argument timeout on toimingu seadistus, mitte iga ülekande kogu tegeliku kestuse tähtaeg. Loe vaid tööks vajalikke andmeid ja kasuta kõrgema taseme tähtaega, kui töö üldine ajaeelarve on range.
Need opener-objektid ei muuda teise teegi klienti, olemasolevat protsessi ega brauseri puhverserveri seadeid.