การตอบกลับของ Requests ดูเพี้ยนเมื่ออยู่หลังพร็อกซี? ตรวจสอบการรองรับ Brotli
Accept-Encoding:br ที่คัดลอกมาอาจล้ำหน้าการรองรับตัวถอดรหัสของสภาพแวดล้อม Requests ที่โฮสต์อยู่
เปรียบเทียบแล็ปท็อปกับโปรเซสที่โฮสต์ในสองชั้นที่แตกต่างกัน:
| ชั้น | คำถาม |
|---|---|
| Content-Encoding | ไคลเอนต์สามารถคลายการบีบอัดไบต์ gzip/deflate/Brotli ที่ส่งกลับมาได้หรือไม่? |
| Charset | ไบต์ที่คลายการบีบอัดแล้วกลายเป็นข้อความได้อย่างไร? |
โดยปกติ Requests จัดการ gzip/deflate; Brotli ต้องมีไลบรารีที่ติดตั้งและรองรับแล้ว Accept-Encoding ที่คัดลอกด้วยมืออาจประกาศ br ในขณะที่สภาพแวดล้อมนี้ถอดรหัสไม่ได้ การเลือกข้อความ UTF-8 ไม่ได้คลายการบีบอัด Brotli
เมื่อจำกัดการเจรจาโดยเจตนา:
response = session.get(
url,
proxies={"https": "http://proxy.example:8080"},
headers={"Accept-Encoding": "gzip, deflate"},
timeout=30,
)
response.raise_for_status()ใช้ Session ที่มีอยู่ URL แบบ HTTPS และเฮดเดอร์/การยืนยันตัวตนที่จำเป็น เปรียบเทียบ Accept-Encoding ขาออก Content-Encoding ขาเข้า และการรองรับแพ็กเกจบนเครื่องทั้งสอง; ตัวกลางที่แปลงข้อมูลอาจให้เมทาดาทาที่ล้าสมัยได้เช่นกัน การเปรียบเทียบหน้าเว็บสาธารณะแยกต่างหากอาจใช้ รายการพร็อกซี HTTP สำหรับ URL พร็อกซีของตนในที่ที่อนุญาตให้ใช้ตัวกลางสาธารณะ โดยไม่มีความรับรองพร็อกซีที่สืบทอดมา เฮดเดอร์บัญชีที่คัดลอก หรือข้อมูลเนื้อหาส่วนตัว
มิฉะนั้นให้เลือกการเจรจาปกติของไคลเอนต์ อินเทอร์เฟซ content/text ที่สะดวกของ Requests จะถอดรหัสการเข้ารหัสที่รองรับ ดังนั้นอย่าคลายการบีบอัดเอาต์พุตของมันซ้ำเพียงเพราะเฮดเดอร์ระบุชื่อ