Python urllib. HTTP հարցումների Basic պրոքսի նույնականացում
Ստեղծեք բացահայտ urllib opener HTTP պրոքսիի Basic մարտահրավերի համար և տարբերակեք այս սովորական HTTP փոխանակումը HTTPS CONNECT նույնականացումից։
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-ը հեռու պահեք մատյաններից։