Python urllib: vërtetimi Basic i proxy-t për kërkesat HTTP
Ndërtoni një opener urllib të qartë për një sfidë Basic nga një proxy HTTP dhe dalloni këtë shkëmbim të zakonshëm HTTP nga vërtetimi HTTPS CONNECT.
Për një sfidë Basic nga një proxy HTTP, përdorni ProxyBasicAuthHandler. Ky shembull i zakonshëm HTTP mban rrugën dhe llogarinë në një opener të vetëm:
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)Përdorni pikën e vërtetë fundore dhe llogarinë që jep operatori. Trajtuesi përdor menaxherin e fjalëkalimeve për sfidën e proxy-t; përputhni URI-në dhe realm-in e synuara të proxy-t. Vërtetimi Basic në destinacion përdor një trajtues tjetër.
Thirrja e opener-it drejtpërdrejt e mban këtë konfigurim lokal. URL-ja e kërkesës mbetet faqja, jo ndërmjetësi. Kjo rrugë HTTP e hapur nuk e kripton një shkëmbim Basic.
Mos nxirrni nga ky shembull mbështetje për tunel HTTPS. Një 407 gjatë CONNECT ndodh në konfigurim, përpara një përgjigjeje të zakonshme të destinacionit; integrimi i zgjedhur duhet ta trajtojë vërtetimin atje. Ndryshimi i trajtuesit të hyrjes së faqes nuk mund ta rregullojë atë sfidë të mëparshme.
URL-të e proxy-t me kredenciale janë një format tjetër që gjendet në shembuj më të vjetër. Nëse përdoren, kodoni saktë ndarësit e URL-së dhe mbajini URL-të që mbartin sekret jashtë regjistrave.