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')

Gunakan fail yang benar-benar diluluskan. proxy-roots.pem mengesahkan perantara; proxy-client.pem dan kunci peribadi yang sepadan mengenal pasti klien ini kepada perantara itu. origin_tls mengekalkan dasar kepercayaan destinasi yang berasingan.

Skema https URL proksi adalah penting untuk pertukaran TLS pertama itu. Untuk sasaran HTTPS, urllib3 kemudian menghantar CONNECT di dalam sesi TLS luar dan melaksanakan TLS laman web melalui terowong.

Jika laman web juga memerlukan sijil klien, letakkan pada origin_tls. Menggunakan semula identiti proksi di sana akan mengesahkan sambungan yang berbeza.

Proksi HTTP biasa yang membawa HTTPS tidak mempunyai jabat tangan TLS luar. HTTP 407 tambahan juga berasingan: memberikan sijil klien tidak membekalkan kelayakan nama pengguna/kata laluan.

Artikel berkaitan