from urllib.request import ProxyHandler, build_opener

def make_proxy_opener(proxy_uri):
    return build_opener(ProxyHandler({
        "http": proxy_uri,
        "https": proxy_uri,
    }))

opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.

Pe ọ̀nà open ti opener yìí fúnra rẹ̀ nígbà tí ipa ọ̀nà kan bá jẹ́ ti àyẹ̀wò náà. Ojú ìparí HTTP nínú àpẹẹrẹ náà lè wá láti inú iṣẹ́ rẹ tàbí láti inú àkójọ proxy HTTP fún àwọn àyẹ̀wò gbogbo ènìyàn. Ẹ̀ka náà fi ìní hàn; kò ṣàlàyé ìlànà ìjẹ́rìí tàbí ìlera ní kíkún. Jẹ́ kí handler èyíkéyìí tí ó jẹ́ ti àkọọ́lẹ̀ wà ní ìsopọ̀ mọ́ oníbàárà tí a pinnu.

urllib.request.install_opener() yí àìpẹ́ gbogbo ìlànà padà tí àwọn ìpè urlopen() ní ìpele module ń lò lẹ́yìn náà. Nítorí náà olùṣàyẹ̀wò tí ń yí káàkiri àwọn proxy lè fi àwọn ìbéèrè tí kò ní í ṣe pẹ̀lú lọ ní lílo ojú ìparí rẹ̀ gbẹ̀yìn. Fífi sínú fún ìgbà díẹ̀ àti mímú padà nígbà ìmọ́tótó ṣì ń jẹ́ kí àwọn ìbéèrè àkókò kan náà ṣiṣẹ́ nígbà ìyípadà tí a pín.

socket.setdefaulttimeout() bákan náà yí àwọn àìpẹ́ padà fún àwọn socket tí a ṣẹ̀dá lẹ́yìn náà. Lo àkókò àìpẹ́ ní ìpele iṣẹ́ nígbà tí ó jẹ́ pé àyẹ̀wò nìkan ni ó yẹ kí ó gbà á.

Pa àwọn ìdáhùn àyẹ̀wò náà dé, kí o sì jẹ́ kí àwọn àbájáde jẹ́ pàtó: ìdáhùn àṣìṣe HTTP kì í ṣe olùgbọ́ proxy tí ó ti kú lọ́nà àìdára. Tí a bá ń lo àyẹ̀wò urllib àkókò kan náà nínú iṣẹ́ async, gbé iṣẹ́ tí ń díwọ̀n lọ sọ́dọ̀ worker tí ó yẹ; ìpinnu ìṣiṣẹ́ yẹn kò mú ìyípadà opener àgbáyé wà ní ìyàsọ́tọ̀.

Àyẹ̀wò kan yẹ kí ó dá àkíyèsí rẹ̀ padà láìfi ìlànà nẹ́tíwọ́kì mìíràn sílẹ̀ lẹ́yìn. Ohun oníbàárà tirẹ̀ àti iṣẹ́ tí ó ní ààlà jẹ́ kí ààlà yẹn hàn kedere.

Àwọn àpilẹ̀kọ tó jọra