เว็บไซต์หนึ่งแห่งต้องใช้พร็อกซีต่างจากคำขอ HTTPS อื่น ๆ ของคุณ Requests สามารถแสดงตัวเลือกนั้นได้ในพจนานุกรมพร็อกซีเอง:

routes = {
    "https://reports.example": "http://reports-proxy.example:8080",
    "https": "http://default-proxy.example:8080",
}
response = requests.get(
    "https://reports.example/monthly",
    proxies=routes,
    timeout=(5, 20),
)
response.raise_for_status()

คีย์เฉพาะชื่อโฮสต์จะชนะสำหรับปลายทางนั้น ชื่อโฮสต์ HTTPS อื่นใช้รายการระดับสคีมทั้งหมด ค่าต่าง ๆ อธิบายการเชื่อมต่อพร็อกซี ดังนั้นปลายทาง HTTPS จึงแมปไปยัง URL พร็อกซี HTTP ได้อย่างถูกต้อง เมื่อสิ่งเหล่านี้เป็นเส้นทางเว็บไซต์สาธารณะที่ได้รับอนุญาตโดยไม่มีบัญชีพร็อกซี รายการพร็อกซี HTTP สามารถให้ผู้สมัครสำหรับค่าเหล่านั้นได้ โปรดเก็บกฎปลายทางแต่ละข้อให้ชัดเจน

จับคู่ชื่อโฮสต์ ไม่ใช่ URL ของทรัพยากร

ใน Requests 2.32.5 คีย์เฉพาะสร้างจากสคีมของปลายทางและชื่อโฮสต์ที่แยกวิเคราะห์แล้ว ไม่มีพาธ คำค้น หรือพอร์ตอยู่

การเพิ่ม /monthly ในคีย์พจนานุกรมจะไม่จำกัดกฎให้อยู่เฉพาะพาธนั้น เช่นเดียวกัน https://reports.example:8443 ไม่ใช่คีย์เฉพาะพอร์ตที่ตัวเลือกนี้รู้จัก กฎชื่อโฮสต์ยังใช้เมื่อ URL ปลายทางใช้พอร์ตอื่น

ไม่มีการขยายไวลด์การ์ดในการค้นหานี้ กฎสำหรับ reports.example ไม่ครอบคลุมโดเมนย่อยโดยอัตโนมัติ ใช้การตัดสินใจกำหนดเส้นทางอย่างชัดเจนนอกพจนานุกรมง่าย ๆ นี้เมื่อนโยบายต้องการจับคู่พาธ พอร์ต หรือส่วนต่อท้าย

รู้ว่าตัวสำรองใดมาถัดไป

การทำงานตรวจสอบคีย์ตามลำดับนี้: scheme://hostname, scheme, all://hostname แล้วจึง all ดังนั้นรายการ HTTPS ระดับสคีมจึงมีลำดับความสำคัญเหนือรายการชื่อโฮสต์สำหรับทุกสคีม วางกฎชื่อโฮสต์เฉพาะสคีมไว้ก่อนในการออกแบบของคุณเมื่อนั่นคือข้อยกเว้นที่ต้องการ

พิจารณาด้วยว่า Session ของคุณรวมค่าเริ่มต้นและการตั้งค่าที่ได้จากสภาพแวดล้อมอย่างไร การส่งรายการชัดเจนสองรายการนี้ไปพร้อมคำขอทำให้เส้นทางที่ตั้งใจชัดเจน แต่ไม่ได้กำหนดนโยบายสำหรับสคีมปลายทางอื่นใด

การเปลี่ยนเส้นทางอาจนำชื่อโฮสต์อื่นเข้ามา และการเลือกพร็อกซีก็เกี่ยวข้องกับปลายทางใหม่นั้นด้วย อ่านกฎนี้เป็นการตัดสินใจเกี่ยวกับทุก URL ที่ร้องขอ ไม่ใช่เส้นทางถาวรที่ผูกกับหน้าแรก

บทความที่เกี่ยวข้อง