HTTP պրոքսիի Basic մարտահրավերի համար օգտագործեք ProxyBasicAuthHandler։ Այս սովորական HTTP օրինակը երթուղին և հաշիվը պահում է մեկ opener-ում․

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

proxy_url = 'http://proxy.example:8080'
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(
    None, proxy_url,
    os.environ['PROXY_USER'], os.environ['PROXY_PASSWORD'],
)
opener = build_opener(
    ProxyHandler({'http': proxy_url}),
    ProxyBasicAuthHandler(passwords),
)
with opener.open('http://example.com/', timeout=10) as response:
    print(response.status)

Օգտագործեք իրական վերջնակետը և օպերատորի տրամադրած հաշիվը։ Այս մշակիչը օգտագործում է գաղտնաբառերի կառավարիչը պրոքսիի մարտահրավերի համար․ համապատասխանեցրեք նախատեսված պրոքսի URI-ն և realm-ը։ Նպատակակետում Basic նույնականացումը օգտագործում է այլ մշակիչ։

opener-ի ուղիղ կանչը այս կարգավորումը պահում է տեղական։ Հարցման URL-ը մնում է կայքը, ոչ թե միջնորդը։ HTTP-ի այս բացահայտ ուղին չի գաղտնագրում Basic փոխանակումը։

Այս օրինակից չենթադրեք HTTPS թունելի աջակցություն։ 407-ը CONNECT-ի ընթացքում տեղի է ունենում կարգաբերման պահին՝ նպատակակետի սովորական պատասխանից առաջ․ ընտրված ինտեգրումը պետք է այնտեղ մշակի նույնականացումը։ Կայքի մուտքի մշակիչը փոխելը չի շտկի այդ ավելի վաղ մարտահրավերը։

Հավատարմագրեր կրող պրոքսի URL-ները հին օրինակներում հանդիպող այլ ձևաչափ են։ Եթե օգտագործվեն, ճիշտ կոդավորեք URL-ի բաժանիչները և ստացված գաղտնիք կրող URL-ը հեռու պահեք մատյաններից։

Առնչվող հոդվածներ