การเชื่อมต่อ SOCKS อาจล้มเหลวในเครื่องก่อนที่พร็อกซ์จะมีโอกาสแก้ไขปลายทาง ตรวจสอบว่าโค้ดของคุณแก้ไขเป้าหมายขณะสร้างที่อยู่ซ็อกเก็ตหรือไม่

สำหรับซ็อกเก็ต Java SOCKS ให้คงชื่อโฮสต์เป้าหมายพร้อมที่อยู่ปลายทางที่ยังไม่ถูกแก้ไข:

Proxy proxy = new Proxy(Proxy.Type.SOCKS,
    new InetSocketAddress("203.0.113.10", 1080));
Socket socket = new Socket(proxy);
socket.connect(InetSocketAddress.createUnresolved(
    "destination.example", 443), 5000);

ปลายทางและชื่อโฮสต์เป็นค่าตัวอย่าง ใช้บริการ SOCKS5 ของคุณหรือผู้สมัครจากรายการพร็อกซี SOCKS5 สำหรับการทดสอบปลายทางสาธารณะที่ได้รับอนุญาต ความแตกต่างสำคัญคือระหว่างการแก้ไขพร็อกซ์เพื่อให้เข้าถึงได้กับการคงชื่อปลายทางไว้สำหรับการแลกเปลี่ยน SOCKS

เมื่อเชื่อมต่อแล้ว ไคลเอนต์ HTTPS ยังต้องใช้เซสชัน TLS สำหรับชื่อโฮสต์ปลายทาง ตัวห่อ TLS ไม่ควรใช้ชื่อโฮสต์ของพร็อกซ์เป็นตัวตนของคู่สนทนา

ตรวจสอบโค้ดระดับสูงด้วย: ไลบรารีอาจทำการค้นหาของตัวเองก่อนเรียกตัวเชื่อมต่อของคุณ การคงชื่อโฮสต์ในที่อยู่ซ็อกเก็ตนี้ไม่สามารถย้อนการค้นหาที่ทำที่อื่นในแอปพลิเคชันได้

บทความที่เกี่ยวข้อง