Python urllib: Zima Proksi kwa Opener Moja
Unda opener ya urllib inayounganisha moja kwa moja kwa ProxyHandler({}), bila kubadili wateja wengine au mazingira ya mchakato.
Pitisha ulinganishaji tupu kwa ProxyHandler wakati opener moja ya urllib inapaswa kuunganisha moja kwa moja:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
Kamusi tupu haitoi njia za proksi. Kuacha ulinganishaji kunaruhusu kishughulikiaji kutambua proksi kutoka kwenye mazingira na mipangilio ya jukwaa. Njia hizi mbili za kuunda huonyesha sera tofauti.
Mfano unatumia maktaba ya kawaida ya Python na huhifadhi uthibitishaji wa kawaida wa HTTPS. Kizuizi cha with hufunga jibu, hata wakati hitilafu ya aina ya exception inasababisha kutoka kwenye kizuizi.
Maombi ya moja kwa moja na kupitia proksi katika programu moja
Opener mbili zinaweza kubeba sera hizo mbili bila kubadili vigezo vya mazingira kati ya miito:
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)
Badilisha anwani ya loopback iwe proksi yako ya HTTP, au chagua mgombea kwenye orodha ya proksi za HTTP kwa kulinganisha kupitia proksi. Inaweza kubeba muunganisho wa lengo la HTTPS kupitia CONNECT huduma ikiruhusu. Itifaki na usaidizi wa uthibitishaji wa msikilizaji vinapaswa kuendana na kishughulikiaji.
Usibadili opener chaguomsingi
Ita direct.open au proxied.open kupitia objekti inayosimamia njia. install_opener hubadili chaguomsingi la mchakato mzima linalotumiwa na miito rahisi ya urllib; hivyo maktaba inayotumia hiyo inaweza kuathiri msimbo usiohusiana. Haihitajiki kwa opener iliyotengwa hapo juu.
Hoja timeout ni mpangilio wa operesheni, si kikomo cha muda halisi cha kila uhamishaji mzima. Soma data inayohitajika tu na utumie kikomo cha kiwango cha juu kama kazi ina bajeti kali ya jumla ya muda.
Objekti hizi za opener hazibadili mteja wa maktaba nyingine, mchakato uliopo au mipangilio ya proksi ya kivinjari.