urllib3 проксиси жана веб-сайты үчүн өзүнчө TLS контексттерин колдонуңуз
HTTPS проксинин кардар сертификатын proxy_ssl_context ичине жүктөңүз, максаттын ишенимин жана максаттын кардар идентификаторун ssl_context ичинде калтырыңыз.
import ssl
import urllib3
proxy_tls = ssl.create_default_context(cafile='proxy-roots.pem')
proxy_tls.load_cert_chain('proxy-client.pem', 'proxy-client.key')
origin_tls = ssl.create_default_context()
with urllib3.ProxyManager(
'https://proxy.example:8443',
proxy_ssl_context=proxy_tls,
ssl_context=origin_tls,
timeout=urllib3.Timeout(connect=5, read=15),
) as http:
response = http.request('GET', 'https://service.example/data')Чынында бекитилген файлдарды колдонуңуз. proxy-roots.pem ортомчуну текшерет; proxy-client.pem жана ага тиешелүү жашыруун ачкыч бул кардарды ошол ортомчуга таанытат. origin_tls максаттын өзүнчө ишеним саясатын сактайт.
Прокси URL дарегинин https схемасы ошол биринчи TLS алмашуусу үчүн зарыл. HTTPS максаты үчүн urllib3 андан кийин CONNECTти сырткы TLS сессиясынын ичинде жөнөтөт жана туннел аркылуу веб-сайт TLSин аткарат.
Эгер веб-сайт да кардар сертификатын талап кылса, аны origin_tls ичине коюңуз. Проксинин идентификаторун ал жерде кайра колдонуу башка туташууну аутентификацияламак.
HTTPS алып жүргөн кадимки HTTP проксинин сырткы TLS кол кармашуусу жок. Кошумча HTTP 407 да өзүнчө: кардар сертификатын берүү колдонуучу аты/сырсөз маалыматтарын бербейт.