หาก session.proxies ชี้ไปที่เอนด์พอยต์หนึ่ง แต่สคริปต์ใช้พร็อกซีของเชลล์ การกำหนดดิกชันนารีเดิมซ้ำไม่แก้ความขัดแย้ง Requests อาจรวมค่าพร็อกซีจากสภาพแวดล้อมโดยให้ความสำคัญเหนือค่าเริ่มต้นของ Session จึงต้องเลือกว่าจะให้ Session ค้นหาค่าจากสภาพแวดล้อมต่อหรือไม่

คงการค้นหาจากสภาพแวดล้อม และระบุเส้นทางในคำขอ

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

proxies = {
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}

with requests.Session() as session:
    response = session.get(
        "https://example.com/",
        proxies=proxies,
        timeout=(5, 15),
    )
    response.raise_for_status()

เปลี่ยนตัวรับฟังภายในเครื่องเป็นของคุณ หากเปรียบเทียบเอนด์พอยต์ HTTP สาธารณะ ให้เลือกจากรายการพร็อกซี HTTP โดยคงนโยบาย Session ไว้ สิ่งนี้ควบคุมรายการในแมปที่ส่งให้ ต้องเลือกอย่างตั้งใจสำหรับสคีมหรือโฮสต์อื่นที่แอปใช้ด้วย บริการ IDE คอนเทนเนอร์ หรือ CI runner อาจรับสภาพแวดล้อมที่ต่างจากเทอร์มินัล

ให้ Session ควบคุมค่าของตนเอง

หากแอปไม่ควรค้นหาพร็อกซีจากสภาพแวดล้อม ให้กำหนดนโยบายก่อนคำขอแรก:

with requests.Session() as session:
    session.trust_env = False
    session.proxies = {
        "http": "http://127.0.0.1:8080",
        "https": "http://127.0.0.1:8080",
    }
    response = session.get(
        "https://example.com/",
        timeout=(5, 15),
    )
    response.raise_for_status()

trust_env=False ยังมีผลต่อค่าใบรับรองที่เกี่ยวข้องกับสภาพแวดล้อมและการยืนยันตัวตน netrc อัตโนมัติ พิจารณาการพึ่งพาเหล่านี้ก่อนเลือกใช้ สำหรับชุดใบรับรอง CA ส่วนตัวที่อนุมัติแล้ว สามารถส่งพาธอย่างชัดเจนได้:

response = session.get(
    "https://example.com/",
    timeout=(5, 15),
    verify="/path/to/approved-ca-bundle.pem",
)

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

หากทั้งสองวิธียังอธิบายเส้นทางแอปไม่ได้ ให้เปรียบเทียบ Session ที่แยกเดี่ยวกับแอป โดยใช้สภาพแวดล้อมรันและปลายทางที่ไม่เป็นอันตรายเดียวกัน บันทึกว่ามีตัวแปรพร็อกซีใด ค่า trust_env และการเรียกส่ง proxies หรือไม่ ห้ามเก็บ URL ที่มีข้อมูลรับรองในบันทึกที่แบ่งปัน หากแบบแยกเดี่ยวสำเร็จ ให้ตรวจการสร้าง Session อะแดปเตอร์ ขั้นตอนคำขอที่เตรียมไว้ หรือชั้นขนส่งที่กำหนดเองต่อ การทดสอบสภาพแวดล้อมด้วย curl ไม่อาจชี้ขาดพฤติกรรมรวมค่าของ Requests เองได้

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