Python Requests: การล็อกอิน Basic แยกสำหรับพร็อกซีและเว็บไซต์
ส่งล็อกอิน Basic ของพร็อกซีผ่าน URL ของพร็อกซี และของเว็บไซต์ปลายทางผ่านอาร์กิวเมนต์ auth ของ Requests
พร็อกซีของสำนักงานขอหนึ่งบัญชี เว็บไซต์ที่อยู่เบื้องหลังขออีกบัญชี 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 นี้ไม่ต้องใช้คลาสการพิสูจน์ตัวตนแบบรวม
407 บ่งชี้คำท้าของตัวกลาง 401 จากเว็บไซต์บ่งชี้คำท้าของปลายทาง ใช้การตอบสนองนั้นตัดสินว่าบัญชีใดในสองบัญชีที่กำหนดค่าไว้ต้องได้รับการดูแล