Objek proxy Java menjelaskan sebuah rute. Klien jaringan tetap memutuskan jenis rute apa yang dapat dipakainya. Ini penting ketika endpoint yang tersedia berbicara SOCKS dan aplikasi memakai java.net.http.HttpClient.

Pada implementasi JDK 25 yang diteliti di sini, kode permintaan klien HTTP menerima kandidat HTTP dari selektor. Kandidat SOCKS tidak membuatnya melakukan negosiasi SOCKS; implementasi dapat melanjutkan tanpa proxy. Karena itu respons yang berhasil bukan bukti yang cukup bahwa entri SOCKS dari selektor khusus telah dipakai.

Pilih transport lebih dulu

Untuk aplikasi yang sudah berbasis URLConnection, penangan protokol dapat diberi proxy eksplisit yang didukung saat membuka koneksi:

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);

Untuk pengujian target publik yang diizinkan, gunakan endpoint SOCKS yang sesuai dari layanan Anda atau dari daftar proxy SOCKS. Ini API klien yang berbeda, bukan ejaan alternatif untuk HttpClient.Builder.proxy. Pertahankan URL tujuan agar HTTPS tetap mengenali situs yang dimaksud.

Aplikasi yang harus mempertahankan java.net.http dapat memakai endpoint proxy HTTP yang kompatibel, termasuk adaptor yang disetujui yang menangani koneksi SOCKS lanjutan. Itu menambah komponen nyata dan satu lagi batas akses; mengubah port 8080 menjadi 1080 tidak menyediakan terjemahan tersebut.

Jaga pemilihan dan adopsi tetap terlihat

Catat hasil selektor dan koneksi yang benar-benar dibuka klien. Yang pertama menjelaskan keluaran kebijakan; yang kedua menetapkan apakah implementasi mengadopsinya.

Ikat kesimpulan pada runtime dan transport yang dipakai. Properti SOCKS JVM yang dipakai satu implementasi socket bukan janji bahwa setiap pustaka HTTP mengonsultasikannya. Ketika rute bersifat wajib, tipe proxy yang tidak didukung harus terdeteksi sebelum menerima permintaan langsung yang tampak berhasil.

Artikel terkait