ใช้ IP พร็อกซีใน Python Requests
กำหนดเส้นทางพร็อกซีต่อคำขอใน Requests อย่างชัดเจน เลือกสคีมเอนด์พอยต์ที่ถูกต้อง และจัดการไทม์เอาต์กับความล้มเหลวของอุโมงค์ HTTPS
เมื่อโครงการมี 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 และค่าทับต่อคำขอควรทำงานร่วมกันอย่างไร การใช้การเชื่อมต่อซ้ำกับนโยบายเส้นทางเป็นคนละทางเลือก