Đặt thương lượng SOCKS của Netty trước giao thức ứng dụng của bạn
Sắp xếp trình xử lý proxy SOCKS của Netty trước lưu lượng ứng dụng và giữ nguyên đích chưa được phân giải khi DNS phía proxy là có chủ đích.
Đối với bootstrap/pipeline Netty hiện có mà máy chủ SOCKS phải phân giải đích:
bootstrap.resolver(NoopAddressResolverGroup.INSTANCE);
pipeline.addFirst(
new Socks5ProxyHandler(new InetSocketAddress("127.0.0.1", 1080))
);
bootstrap.connect(
InetSocketAddress.createUnresolved("example.com", 443)
);Điểm cuối proxy là cổng cục bộ 1080; đích kết nối chưa được phân giải là example.com:443. Đừng dùng địa chỉ proxy cho cả hai vai trò và đừng phân giải tên trước khi trình xử lý nhận được nó. Đối với các đích công khai trên tuyến proxy công khai được phép, danh sách proxy SOCKS5 cung cấp ứng viên cho điểm cuối proxy của trình xử lý.
Đặt Socks5ProxyHandler trước các trình xử lý trao đổi lưu lượng đến đích. Chờ future của kết nối proxy, không chỉ một kênh đến được listener. Phương thức hoặc đích bị từ chối thuộc về giai đoạn thiết lập này.
Với HTTPS, lớp TLS tiếp theo dùng tên máy chủ của đích, xác minh và tin cậy cần thiết—không phải danh tính của điểm cuối SOCKS. Chỉ khi đó trao đổi HTTP/ứng dụng mới bắt đầu.
Đoạn mã không cung cấp vòng lặp sự kiện, loại kênh, trình xử lý TLS/HTTP hay xử lý lỗi thông thường. Chọn hàm khởi tạo SOCKS phù hợp nhu cầu xác thực; trình xử lý HTTP Basic là giao thức khác.
Chỉ dùng resolver no-op ở nơi trình xử lý hạ nguồn này sở hữu việc phân giải tên máy chủ. Các kết nối khác có thể cần tra cứu cục bộ. Giữ riêng đầu ra resolver, future proxy, TLS và kết quả ứng dụng khi chẩn đoán lỗi.