สายโซ่พร็อกซี SOCKS ไป HTTP ของ curl
ตั้งสายโซ่ SOCKS→HTTP ที่ curl รองรับ ระบุลำดับเอนด์พอยต์ และทดสอบแต่ละช่วงก่อนนำมารวมกัน
ตัวเลือก --preproxy ของ curl เชื่อมต่อพร็อกซี SOCKS ก่อนถึงพร็อกซี HTTP หรือ HTTPS รองรับสายโซ่เฉพาะแบบนี้ ไม่ใช่รายชื่อเซิร์ฟเวอร์พร็อกซีแบบใดก็ได้
เส้นทางคือไคลเอนต์ → เอนด์พอยต์ SOCKS → พร็อกซี HTTP → ปลายทาง เปลี่ยนเอนด์พอยต์ตัวอย่างทั้งสองในคำสั่งนี้:
curl --preproxy socks5h://203.0.113.10:1080 --proxy http://203.0.113.20:8080 --noproxy '' --connect-timeout 5 --max-time 20 --verbose https://example.com/
บริการ SOCKS ต้องเข้าถึงที่อยู่และพอร์ตของพร็อกซี HTTP ได้ จากนั้นพร็อกซี HTTP ต้องยอมรับคำขอไปปลายทาง ถ้าพร็อกซีตัวที่สองเป็นชื่อโฮสต์ โหมด SOCKS ตัวแรกกำหนดว่าชื่อนั้นถูกแปลงที่ใด เอนด์พอยต์ตัวเลขจึงไม่ต้องค้นชื่อนี้
หาช่วงที่ล้มเหลว
ก่อนอื่นยืนยันคำขอผ่านแต่ละเอนด์พอยต์แยกกัน สำหรับช่วง HTTP ใช้การทดสอบพร็อกซี HTTP ที่จำกัดเวลา แม้ทั้งสองจะใช้ได้ เส้นทางรวมก็ยังอาจล้มเหลวเพราะพร็อกซีตัวแรกเข้าถึงตัวที่สองไม่ได้
อ่านบันทึกละเอียดตามลำดับการเชื่อมต่อ ความล้มเหลวของ SOCKS ขณะไปถึงพร็อกซีตัวที่สองเกิดก่อนพร็อกซี HTTP ตัดสินใจยอมรับหรือปฏิเสธ CONNECT ไปยังเว็บไซต์ จดว่าแฮนด์เชกใดล้มเหลว
ช่วงเพิ่มเติมช่วยเมื่อใด
รูปแบบนี้มีประโยชน์เมื่อพร็อกซี HTTP ที่ได้รับอนุญาตเข้าถึงได้ผ่านเส้นทาง SOCKS แต่ก็เพิ่มอีกบริการและเส้นทางเครือข่ายที่อาจล้มเหลวหรือเพิ่มความล่าช้า การต่อเอนด์พอยต์จากรายการพร็อกซีสาธารณะไม่รับประกันความน่าเชื่อถือหรือการไม่เปิดเผยตัวตน และยังต้องไว้วางใจฝ่ายต่าง ๆ ที่จัดการการเชื่อมต่อ
--preproxy ต้องใช้ curl 7.52.0 หรือใหม่กว่า แอปพลิเคชันอื่นอาจไม่รองรับรูปแบบเดียวกัน