วางการเจรจา SOCKS ของ Netty ก่อนโปรโตคอลแอปพลิเคชันของคุณ
จัดวางตัวจัดการพร็อกซี่ SOCKS ของ Netty ก่อนทราฟฟิกแอปพลิเคชัน และคงปลายทางที่ยังไม่ถูกแปลงชื่อไว้เมื่อต้องการให้ DNS อยู่ฝั่งพร็อกซี่
สำหรับ bootstrap/pipeline ของ Netty ที่มีอยู่ซึ่งเซิร์ฟเวอร์ SOCKS ควรแปลงปลายทาง:
bootstrap.resolver(NoopAddressResolverGroup.INSTANCE);
pipeline.addFirst(
new Socks5ProxyHandler(new InetSocketAddress("127.0.0.1", 1080))
);
bootstrap.connect(
InetSocketAddress.createUnresolved("example.com", 443)
);ปลายทางพร็อกซี่คือพอร์ตโลคอล 1080 เป้าหมายการเชื่อมต่อที่ยังไม่ถูกแปลงคือ example.com:443 อย่าใช้ที่อยู่พร็อกซี่สำหรับทั้งสองบทบาท และอย่าแปลงชื่อก่อนที่ตัวจัดการจะได้รับ สำหรับเป้าหมายสาธารณะบนเส้นทางพร็อกซี่สาธารณะที่ได้รับอนุญาต รายการพร็อกซี่ SOCKS5 มีผู้สมัครสำหรับปลายทางพร็อกซี่ของตัวจัดการ
วาง Socks5ProxyHandler ก่อนตัวจัดการที่แลกเปลี่ยนทราฟฟิกไปยังปลายทาง รอ future ของการเชื่อมต่อพร็อกซี่ ไม่ใช่แค่แชนเนลที่ไปถึงตัวรับฟัง วิธีหรือปลายทางที่ถูกปฏิเสธเป็นส่วนของขั้นตอนการตั้งค่านี้
สำหรับ HTTPS ชั้น TLS ถัดไปใช้ชื่อโฮสต์ของปลายทาง การตรวจสอบและความเชื่อถือที่จำเป็น—ไม่ใช่อัตลักษณ์ของปลายทาง SOCKS จากนั้นจึงเริ่มการแลกเปลี่ยน HTTP/แอปพลิเคชัน
ส่วนย่อยนี้ไม่ได้ให้ event loop ชนิดแชนเนล ตัวจัดการ TLS/HTTP หรือการจัดการข้อผิดพลาดปกติ เลือกคอนสตรัคเตอร์ SOCKS ที่ตรงกับความต้องการการยืนยันตัวตน ตัวจัดการ HTTP Basic เป็นอีกโปรโตคอลหนึ่ง
ใช้ resolver แบบ no-op เฉพาะที่ตัวจัดการปลายน้ำนี้เป็นเจ้าของการแปลงชื่อโฮสต์ การเชื่อมต่ออื่นอาจต้องค้นหาในเครื่อง แยกเอาต์พุตของ resolver, future ของพร็อกซี่, TLS และผลลัพธ์แอปพลิเคชันออกจากกันเมื่อวินิจฉัยความล้มเหลว