Để đích Java SOCKS không được phân giải
Tránh DNS đích cục bộ khi tạo kết nối Java SOCKS bằng cách giữ nguyên tên máy chủ đích.
Kết nối SOCKS có thể thất bại cục bộ trước khi proxy có cơ hội phân giải đích. Kiểm tra xem mã của bạn có phân giải mục tiêu khi xây dựng địa chỉ socket hay không.
Đối với socket Java SOCKS, hãy giữ tên máy chủ đích với địa chỉ đích chưa được phân giải:
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);Điểm cuối và tên máy chủ là giá trị giữ chỗ; hãy dùng dịch vụ SOCKS5 của bạn hoặc một ứng viên từ danh sách proxy SOCKS5 cho các bài kiểm tra đích công khai được phép. Sự khác biệt quan trọng là giữa việc phân giải proxy để bạn có thể tiếp cận nó và việc giữ tên đích cho trao đổi SOCKS.
Sau khi kết nối, máy khách HTTPS vẫn cần phiên TLS cho tên máy chủ đích. Lớp bọc TLS không nên dùng tên máy chủ của proxy làm danh tính của đối tác.
Cũng hãy kiểm tra mã cấp cao hơn: một thư viện có thể tự tra cứu trước khi gọi trình kết nối của bạn. Việc giữ tên máy chủ trong địa chỉ socket này không thể hoàn tác một tra cứu được thực hiện ở nơi khác trong ứng dụng.