অফিসের প্রক্সি একটি অ্যাকাউন্ট চায়। তার পেছনের ওয়েবসাইট আরেকটি চায়। Requests-এর কাছে ওই দুটি Basic লগইনের জন্য আলাদা ইনপুট আছে: প্রক্সি URL-এ থাকা ক্রেডেনশিয়াল এবং রিকোয়েস্টের auth আর্গুমেন্ট।

from urllib.parse import quote
import requests

proxy_url = (
    f"http://{quote(proxy_user, safe='')}:"
    f"{quote(proxy_password, safe='')}@proxy.example:8080"
)
response = requests.get(
    "https://reports.example/private/",
    proxies={"https": proxy_url},
    auth=(site_user, site_password),
    timeout=(5, 20),
)
response.raise_for_status()

চারটি অ্যাকাউন্ট ভেরিয়েবল অ্যাপ্লিকেশনের ক্রেডেনশিয়াল কনফিগারেশন থেকে আসে। প্রক্সি ইউজারনেম ও পাসওয়ার্ড আলাদাভাবে এনকোড করা at চিহ্নের মতো অক্ষরকে URL ডেলিমিটারে না বদলে সংরক্ষণ করে।

https ডিকশনারি কীটি HTTPS গন্তব্যের জন্য এই পথ বেছে নেয়। এর মান এখনও http:// দিয়ে শুরু হয়, কারণ এই উদাহরণ প্রক্সিতে পৌঁছাতে যে প্রোটোকল ব্যবহার হয় সেটিই তা।

ওই HTTPS রিকোয়েস্টে প্রক্সি লগইন CONNECT বিনিময়ের অংশ। ওয়েবসাইট লগইন প্রতিষ্ঠিত টানেলের মধ্য দিয়ে পরের রিকোয়েস্টের অংশ। অ্যাডাপ্টারকে নিজের URL থেকে প্রক্সি অনুমোদন নিতে দিলে তা সংশ্লিষ্ট হপেই থাকে; এই Basic ক্ষেত্রে মিলিত authentication ক্লাস দরকার নেই।

407 মধ্যস্থের চ্যালেঞ্জ বোঝায়। ওয়েবসাইট থেকে পাওয়া 401 গন্তব্যের চ্যালেঞ্জ বোঝায়। দুটি কনফিগার করা অ্যাকাউন্টের কোনটিতে মনোযোগ দরকার তা ঠিক করতে ওই রেসপন্স ব্যবহার করুন।

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