Kuita install_opener() mara mbili hakuongezi opener ya pili kwenye ya kwanza. Badala yake, hubadilisha opener chaguo-msingi ya module. Ikiwa kitu kimoja kinajua proxy na kingine kinajua kuingia kwenye tovuti, jenga opener moja yenye handlers zinazohitajika.

import os
from urllib.request import (ProxyHandler, HTTPBasicAuthHandler,
                            HTTPPasswordMgrWithDefaultRealm, build_opener)

passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(None, 'https://example.com/private/',
                       os.environ['SITE_USER'], os.environ['SITE_PASSWORD'])
opener = build_opener(
    ProxyHandler({'https': 'http://203.0.113.10:8080'}),
    HTTPBasicAuthHandler(passwords),
)
with opener.open('https://example.com/private/report', timeout=10) as response:
    body = response.read()

Proxy na lengwa ni mifano. Kwa huduma ya umma inayoweza kufikiwa kupitia proxy ya HTTP ya umma, orodha ya proxy za HTTP hutoa endpoints zinazowezekana kwa handler ya uelekezaji. Opener hii inaelekeza ombi la HTTPS kupitia proxy ya HTTP na kushughulikia changamoto ya Basic ya lengwa. Haiconfiguri uthibitishaji wa proxy.

Ikiwa proxy pia inahitaji kuingia, chagua mpangilio wa uthibitishaji wa proxy unaotumika kwa tofauti. 407 wakati wa CONNECT hutokea kabla lengwa kuweza kutoa changamoto yake mwenyewe. Kuongeza vitambulisho vya tovuti kwenye msimamizi wa nenosiri hakuwezi kukidhi ubadilishanaji huo wa awali.

Kuita opener.open() moja kwa moja huhifadhi usanidi pamoja na operesheni. Hakuna haja ya kubadilisha chaguo-msingi la module nzima isipokuwa programu inataka kwa makusudi kwamba simu zote rahisi zishiriki opener hii.

Makala zinazohusiana