urllib3 ProxyManager: ส่งข้อมูลรับรอง Basic ใน proxy_headers
ส่งข้อมูลรับรอง Basic ของพร็อกซีผ่าน ProxyManager.proxy_headers เพื่อให้พร้อมใช้ระหว่าง HTTPS CONNECT โดยไม่กลายเป็นเฮดเดอร์ปลายทาง
ProxyManager มีอาร์กิวเมนต์ proxy_headers แยกต่างหากสำหรับเฮดเดอร์ที่ส่งไปยังตัวกลาง สำหรับพร็อกซีที่รับ Basic authentication:
import urllib3
proxy_headers = urllib3.make_headers(
proxy_basic_auth=f'{proxy_user}:{proxy_password}'
)
with urllib3.ProxyManager(
'http://proxy.example:8080',
proxy_headers=proxy_headers,
timeout=urllib3.Timeout(connect=5, read=10),
) as http:
response = http.request('GET', 'https://service.example/data')
print(response.status)
สำหรับปลายทาง HTTP ธรรมดา เฮดเดอร์เหล่านี้จะเดินทางไปกับคำขอที่ส่งต่อถึงพร็อกซี สำหรับปลายทาง HTTPS ที่ใช้ CONNECT เฮดเดอร์เหล่านี้เป็นของการตั้งค่าอุโมงค์ ไม่ใช่คำขอเว็บไซต์ที่เข้ารหัสแต่ละครั้ง
อาร์กิวเมนต์ headers ตามปกติอธิบายเฮดเดอร์คำขอปลายทาง proxy authentication นี้เป็นของผู้รับอีกราย การใส่บัญชีของพร็อกซีไว้ที่นั่นไม่เท่ากับการกำหนดค่าการแลกเปลี่ยน CONNECT ก่อนหน้านี้
make_headers สร้างค่าของเฮดเดอร์ Basic โดยไม่เจรจา NTLM ไม่เลือกสคีมาที่รองรับโดยอัตโนมัติ และไม่พิสูจน์ว่าพร็อกซียอมรับบัญชีนั้น
พร็อกซีที่มี TLS listener จะเพิ่ม proxy TLS context แยกต่างหาก ปลายทาง http:// ข้างต้นจงใจอธิบาย HTTP listener ธรรมดาที่พาปลายทาง HTTPS ผ่านอุโมงค์