พอร์ตพร็อกซีเดียวสามารถรับทั้ง HTTP และ SOCKS ได้อย่างไร
อธิบายว่าตัวรับฟังที่ผสมกันโดยเจตนาสามารถแยกแยะ HTTP กับ SOCKS ได้อย่างไร ในขณะที่ตัวรับฟังโปรโตคอลเดียวทั่วไปทำไม่ได้
ตัวรับฟังพร็อกซีแบบผสมสามารถรับ HTTP และ SOCKS บนพอร์ต TCP เดียวได้ เพราะเซิร์ฟเวอร์ตรวจสอบไบต์โปรโตคอลเริ่มต้น หมายเลขพอร์ตไม่ได้ทำการตรวจจับนั้น
คำขอพร็อกซี HTTP เริ่มต้นด้วยเมธอด HTTP เช่น GET หรือ CONNECT การทักทาย SOCKS เริ่มต้นด้วยฟิลด์โปรโตคอลแบบไบนารี ซอฟต์แวร์ที่ออกแบบสำหรับอินพุตเหล่านี้สามารถส่งต่อการเชื่อมต่อไปยังตัวจัดการที่เหมาะสม
นี่คือคุณลักษณะการทำงานที่ชัดเจน ตัวรับฟัง HTTP ปกติของ Squid ไม่กลายเป็นแบบผสมเพราะพอร์ตถูกเปลี่ยนเป็น 1080 และตัวรับฟัง SOCKS เท่านั้นไม่เรียนรู้ HTTP จากการตั้งค่าเบราว์เซอร์
TLS เพิ่มขอบเขตอีกชั้น การเชื่อมต่อพร็อกซีที่เข้ารหัสเริ่มต้นด้วย TLS ไม่ใช่เมธอด HTTP ที่มองเห็นได้ การรองรับบนปลายทางเดียวกันต้องมีการจัดการโดยเจตนาเพิ่มเติม การรู้จัก HTTP แบบข้อความธรรมดาและ SOCKS ไม่ได้พิสูจน์ความสามารถนั้น
ใช้โปรโตคอลไคลเอนต์ที่เอกสารไว้สำหรับปลายทาง หากทั้งสองทำงานได้ นั่นคือหลักฐานเกี่ยวกับตัวรับฟังแบบผสมของเซิร์ฟเวอร์นั้น ไม่ใช่เหตุผลที่จะปล่อยให้โปรโตคอลไม่ระบุในทุกไคลเอนต์
ตัวรับฟังแบบผสมของ Glider ให้ตัวอย่างที่เป็นรูปธรรม มันมองดูไบต์หนึ่งโดยไม่บริโภคมัน ส่ง 0x05 ไปยังตัวจัดการ SOCKS5 ของมัน และมิฉะนั้นจะเรียกตัวแยกวิเคราะห์ HTTP ตัวแยกวิเคราะห์นั้นยังคงตรวจสอบคำขอที่เข้ามา การเลือกส่งไม่ได้ทำให้อินพุตตามอำเภอใจเป็น HTTP ที่ถูกต้อง
การแชร์ตัวรับฟัง TCP ไม่ได้ให้ความสัมพันธ์ UDP ของ SOCKS5 ด้วยตัวเอง Glider เริ่มตัวรับฟัง UDP แยกต่างหาก การเลือกโปรโตคอล TCP และการส่งต่อดาตาแกรมในภายหลังเป็นความสามารถที่แยกจากกัน