ทดสอบพร็อกซี HTTP ด้วย curl
ใช้การทดสอบ curl ที่จำกัดเวลาเพื่อตรวจการเชื่อมต่อพร็อกซี อุโมงค์ HTTPS สถานะตอบกลับ และกฎข้ามพร็อกซี โดยไม่เปลี่ยนพร็อกซีส่วนกลางของอุปกรณ์
แทน 127.0.0.1:8080 ด้วยเอนด์พอยต์จากบริการของคุณหรือจากรายการพร็อกซี HTTP แล้วเรียกคำสั่งนี้ไปยังปลายทาง HTTPS ที่ไม่เป็นอันตราย:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/ที่อยู่ลูปแบ็กหมายถึงลิสเทนเนอร์บนเครื่องของคุณเอง คำสั่งนี้เลือกจุดนั้นอย่างชัดเจน ล้างรายการข้ามพร็อกซีของ curl สำหรับการเรียกครั้งนี้ และให้เวลาสร้างการเชื่อมต่อห้าวินาที กับเวลารวมสิบห้าวินาที โดยไม่เปลี่ยนการตั้งค่าพร็อกซีของเบราว์เซอร์หรือระบบ
ใช้ไฟล์โปรแกรม curl ตัวจริงหากเชลล์กำหนด curl เป็นชื่อแทนโปรแกรมอื่น โดย curl --version จะระบุบิลด์ที่ใช้ หากลิสเทนเนอร์เองต้องใช้ TLS ให้ใช้สคีม URL ของพร็อกซีตามเอกสาร
อ่านผลสี่ส่วน ไม่ใช่แค่สัญญาณสำเร็จเดียว
- เชื่อมต่อพร็อกซีที่เลือกแล้ว: ที่อยู่และพอร์ตเข้าถึงได้
- CONNECT ได้รับการยอมรับ: พร็อกซีเปิดอุโมงค์ไปยังปลายทาง HTTPS แล้ว
- ตรวจสอบใบรับรองปลายทางแล้ว: TLS เสร็จสมบูรณ์พร้อมการตรวจสอบความเชื่อถือที่คาดหมาย
- ได้รับคำตอบจากปลายทางแล้ว: ตรวจสถานะและเนื้อหาว่าให้ผลที่แอปพลิเคชันต้องการหรือไม่
อุโมงค์ที่ทำงานได้อาจตามด้วย 403 หรือ 429 จากปลายทาง curl อาจจบด้วยสถานะสำเร็จแม้ได้รับคำตอบข้อผิดพลาด HTTP จึงควรบันทึกทั้งสถานะตอบกลับและผลข้อผิดพลาดของ curl การเชื่อมต่อ TCP หรือ CONNECT สำเร็จเพียงอย่างเดียวยังไม่พอ
ผลแบบย่อสำหรับเปรียบเทียบซ้ำ
ในเชลล์แบบ Unix ให้ทิ้งเนื้อหาตอบกลับและแสดงสถานะอุโมงค์ สถานะปลายทาง คู่เชื่อมต่อ และเวลาที่ใช้:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect} peer=%{remote_ip} total=%{time_total}\n' https://example.com/http_connect อธิบายคำตอบของอุโมงค์ ส่วน http_code อธิบายคำตอบ HTTP สุดท้าย remote_ip คือคู่เชื่อมต่อของ curl ไม่ใช่การวัดที่อยู่ออกของพร็อกซีอย่างเป็นอิสระ บนระบบอื่นให้แทน /dev/null หรือเก็บเนื้อหาตอบกลับไว้
หากทดสอบไม่สำเร็จ ให้หาขั้นตอนสร้างการเชื่อมต่อหรือรับส่งข้อมูลที่ล้มเหลว แล้วเปรียบเทียบกับการติดต่อปลายทางเดียวกันโดยตรงในกรณีที่อนุญาตเส้นทางนั้น:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/--noproxy '*' ข้ามพร็อกซี หากการตรวจใบรับรองล้มเหลวทั้งสองเส้นทาง อาจเป็นปัญหาความเชื่อถือร่วมกัน หากติดต่อโดยตรงสำเร็จแต่ CONNECT ถูกปฏิเสธ อาจเกี่ยวกับการยืนยันตัวตนหรือนโยบายของพร็อกซี ตรวจผลแบบละเอียดก่อนแชร์ เพราะอาจมีข้อมูลที่ใช้ระบุตัวตนได้
เก็บเอนด์พอยต์ เป้าหมาย และเวลาประทับพร้อมผล การทดสอบนี้ยืนยันว่าอะไรทำงานสำหรับคำขอนั้น ส่วนความพร้อมใช้ในอนาคต ความเป็นส่วนตัว และประสิทธิภาพเมื่อมีโหลด ต้องมีหลักฐานแยกต่างหาก