ตรวจสอบเนื้อความของการตอบกลับ CONNECT ของพร็อกซีที่ล้มเหลวด้วย curl
ส่ง CONNECT เพื่อการวินิจฉัยที่สร้างอย่างถูกต้องไปยังพร็อกซี HTTP โดยตรง และบันทึกส่วนหัวและเนื้อความของความล้มเหลว HTTP แยกจากกัน
พร็อกซีที่ปฏิเสธ CONNECT อาจส่งเอกสารข้อผิดพลาด HTTP กลับมาซึ่งอธิบายนโยบายหรือความล้มเหลวของการเชื่อมต่อถัดไป สำหรับการวินิจฉัยที่ได้รับอนุญาตกับพร็อกซี HTTP ทั่วไป curl สามารถส่งคำขอนั้นโดยตรงและบันทึกการตอบกลับ:
curl --proxy '' --http1.1 --max-time 10 \
--request CONNECT \
--request-target service.example:443 \
--header 'Host: service.example:443' \
--dump-header tunnel.headers \
--output tunnel.body \
http://proxy.example:8080/
URL สุดท้ายชี้ไปที่ตัวรับฟังของพร็อกซี สำหรับการเปรียบเทียบพร็อกซีสาธารณะที่ได้รับอนุญาต รายการพร็อกซี HTTP มีผู้สมัครสำหรับ URL ตัวรับฟังนั้น --request ให้โทเค็นวิธี; --request-target ให้สิทธิ์ CONNECT การแยกทั้งสองไว้ออกจากกันจะสร้าง CONNECT service.example:443 HTTP/1.1
ตัวเลือกพร็อกซีว่างป้องกันไม่ให้ curl ส่งการวินิจฉัยนี้ผ่านพร็อกซีอื่นที่สืบทอดมา คำสั่งจงใจละเว้น --fail เพื่อให้เอกสารข้อผิดพลาด HTTP ถูกเก็บไว้ได้
ความพยายามที่ไม่มีการพิสูจน์ตัวตนอาจหยุดที่ 407 ก่อนจะถึงความล้มเหลวที่กำลังตรวจสอบ ใช้การจัดพิสูจน์ตัวตนที่พร็อกซีตั้งใจไว้เมื่อสร้างคำขอที่พิสูจน์ตัวตนแล้วขึ้นใหม่
นี่มีไว้เพื่อตรวจสอบการตอบกลับที่ล้มเหลว หากพร็อกซีส่ง 2xx กลับมา การเชื่อมต่อจะกลายเป็นอุโมงค์แทนการถ่ายโอนเนื้อความ HTTP ปกติ การวินิจฉัยด้วยวิธีกำหนดเองนี้ไม่เริ่มการแลกเปลี่ยน TLS ของปลายทาง และอาจถึงขีดจำกัดเวลาบนอุโมงค์เปิดที่ได้รับการยอมรับ
ใช้ลำดับคำขอ --proxy ปกติสำหรับการดึง HTTPS จริง เก็บสถานะและเนื้อความของการวินิจฉัยไว้กับพร็อกซีและเป้าหมายเฉพาะของมัน