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 তারপর বাইরের TLS সেশনের ভিতরে CONNECT পাঠায় এবং টানেলের মাধ্যমে ওয়েবসাইট TLS সম্পাদন করে।

ওয়েবসাইটটিও যদি ক্লায়েন্ট সার্টিফিকেট চায়, তবে এটি origin_tls-এ রাখুন। সেখানে প্রক্সি পরিচয় পুনরায় ব্যবহার করলে অন্য একটি সংযোগ প্রমাণিত হবে।

HTTPS বহনকারী সাধারণ HTTP প্রক্সির কোনো বাইরের TLS হ্যান্ডশেক নেই। অতিরিক্ত HTTP 407-ও আলাদা: ক্লায়েন্ট সার্টিফিকেট দেওয়া ব্যবহারকারীর নাম/পাসওয়ার্ড শংসাপত্র সরবরাহ করে না।

সম্পর্কিত নিবন্ধ