Một đối tượng proxy của Java mô tả một tuyến. Ứng dụng mạng vẫn tự quyết định những kiểu tuyến nào nó có thể dùng. Điều này quan trọng khi điểm cuối sẵn có nói SOCKS và ứng dụng dùng java.net.http.HttpClient.

Trong bản triển khai JDK 25 được xem xét ở đây, mã yêu cầu của ứng dụng HTTP chấp nhận một ứng viên HTTP từ bộ chọn. Một ứng viên SOCKS không khiến nó thực hiện thương lượng SOCKS; bản triển khai có thể tiếp tục mà không có proxy. Vì vậy, một phản hồi thành công chưa đủ bằng chứng rằng mục SOCKS của bộ chọn tùy chỉnh đã được dùng.

Chọn transport trước

Với ứng dụng hiện có dựa trên URLConnection, có thể cấp cho trình xử lý giao thức một proxy tường minh được hỗ trợ khi mở kết nối:

Proxy route = new Proxy(Proxy.Type.SOCKS,
    new InetSocketAddress("proxy.example", 1080));
URLConnection connection = URI.create("https://service.example/")
    .toURL().openConnection(route);
connection.setConnectTimeout(5000);
connection.setReadTimeout(15000);

Với các thử nghiệm được phép trên mục tiêu công khai, hãy dùng một điểm cuối SOCKS phù hợp từ dịch vụ của bạn hoặc từ danh sách proxy SOCKS. Đây là một API ứng dụng khác, không phải cách viết khác của HttpClient.Builder.proxy. Giữ nguyên URL đích để HTTPS tiếp tục nhận diện đúng trang web dự định.

Ứng dụng buộc phải giữ java.net.http có thể dùng thay vào đó một điểm cuối proxy HTTP tương thích, kể cả bộ chuyển đổi đã được phê duyệt xử lý kết nối SOCKS tiếp theo. Điều đó thêm một thành phần thực và một ranh giới truy cập nữa; đổi cổng 8080 thành 1080 không mang lại sự chuyển đổi đó.

Giữ cho việc chọn và áp dụng được thấy rõ

Ghi lại cả kết quả của bộ chọn lẫn kết nối mà ứng dụng thực sự mở. Cái đầu mô tả đầu ra chính sách; cái sau xác lập liệu bản triển khai có áp dụng nó hay không.

Gắn kết luận với môi trường chạy và transport đang dùng. Các thuộc tính JVM SOCKS mà một bản triển khai socket dùng không phải là lời hứa rằng mọi thư viện HTTP đều tra cứu chúng. Khi tuyến là bắt buộc, kiểu proxy không được hỗ trợ cần được phát hiện trước khi chấp nhận một yêu cầu trực tiếp có vẻ thành công.

Bài viết liên quan