เมื่อโครงการมี Requests พร้อมใช้ ให้ส่งแมปพร็อกซีให้การเรียก:

import requests

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

response = requests.get(
    "https://example.com/",
    proxies=proxies,
    timeout=(5, 15),
)
response.raise_for_status()
print(response.status_code)

แทนเอนด์พอยต์ลูปแบ็กด้วยพร็อกซีที่ทำงานอยู่ หรือผู้สมัครจากรายการพร็อกซี HTTPที่จะทดสอบด้วยคำขอนี้ คีย์บอกสคีมของปลายทาง: http สำหรับ URL แบบ HTTP และ https สำหรับ URL แบบ HTTPS ค่าบอกลิสเทนเนอร์ของพร็อกซี ซึ่งอาจเป็นคนละเอนด์พอยต์หากเครือข่ายต้องใช้เส้นทางแยกกัน

การวางค่าพร็อกซี http:// ใต้คีย์ https เป็นความตั้งใจ Requests ขออุโมงค์ CONNECT จากลิสเทนเนอร์ HTTP แล้วสร้าง TLS กับปลายทางผ่านอุโมงค์ ภายใต้นโยบายปลายทางและพอร์ตของพร็อกซี การเปลี่ยนค่าเป็น https:// คือขอTLS ถึงตัวพร็อกซีเอง ซึ่งอาจล้มเหลวหากลิสเทนเนอร์คาดว่าเป็น HTTP ไม่เข้ารหัส

ตัวเลขไทม์เอาต์สองค่าหมายถึงอะไร

timeout=(5, 15) กำหนดไทม์เอาต์การเชื่อมต่อและการอ่าน ไม่ได้บังคับให้คำขอทั้งหมดจบภายในสิบห้าวินาที ข้อมูลที่เข้ามาเป็นระยะ หลายที่อยู่ และความพยายามเชื่อมต่ออาจทำให้เวลารวมยาวขึ้น Requests ไม่ให้ไทม์เอาต์ทั่วไปเมื่อไม่ใส่ค่านี้ จึงควรเลือกขีดจำกัดให้เหมาะกับคำตอบและเพิ่มเส้นตายระดับแอปหากงานต้องมีเวลารวมตายตัว

จัดการความล้มเหลวในขั้นตอนที่เกิดขึ้น

try:
    response = requests.get(
        "https://example.com/",
        proxies=proxies,
        timeout=(5, 15),
    )
    response.raise_for_status()
except requests.exceptions.ProxyError as error:
    print("Proxy setup failed:", type(error).__name__)
except requests.exceptions.Timeout:
    print("A configured timeout expired")
except requests.exceptions.HTTPError as error:
    print("HTTP status:", error.response.status_code)

CONNECT ที่ถูกปฏิเสธอาจทำให้เกิด ProxyError ก่อนมีคำตอบจากปลายทาง ส่วน HTTPError เกิดหลังได้รับคำตอบที่มีสถานะผิดพลาด และ Timeout หมายถึงขีดจำกัดที่ตั้งไว้หมดเวลาแล้ว ตรวจสายโซ่ข้อยกเว้นของการสร้างการเชื่อมต่อในเครื่อง และลบเอนด์พอยต์ที่มีข้อมูลรับรองกับ URL ส่วนตัวก่อนแชร์

เปิดการตรวจใบรับรองไว้ หากเครือข่ายที่อนุญาตใช้ CA ส่วนตัวหรือการดักรับที่จัดการไว้ ให้ระบุข้อมูลความเชื่อถือที่ต้องใช้ แทนการปิดการตรวจสอบ

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

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