JDK 25 HttpClient SOCKS ProxySelector marşrutlarından istifadə etmir
Yalnız ProxySelector-un qaytardığı tipə güvənmək əvəzinə SOCKS-u həqiqətən dəstəkləyən Java HTTP nəqlini seçin.
Java proxy obyekti bir marşrutu təsvir edir. Şəbəkə müştərisi hələ də hansı növ marşrutlardan istifadə edə biləcəyini özü qərar verir. Bu, mövcud son nöqtə SOCKS danışdıqda və tətbiq java.net.http.HttpClient istifadə etdikdə əhəmiyyət kəsb edir.
Burada araşdırılan JDK 25 tətbiqində HTTP müştərisinin sorğu kodu seçicidən HTTP namizədi qəbul edir. SOCKS namizədi onu SOCKS danışıqları aparmağa vadar etmir; tətbiq proxysiz davam edə bilər. Buna görə uğurlu cavab fərdi seçicinin SOCKS girişinin istifadə olunduğuna dair kifayət qədər sübut deyil.
Əvvəlcə nəqli seçin
URLConnection-a əsaslanan mövcud tətbiq üçün protokol işlədicisinə bağlantı açılarkən dəstəklənən açıq proxy vermək olar:
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);
İcazə verilmiş ictimai hədəf testləri üçün xidmətinizdən və ya SOCKS proxy siyahısından uyğun SOCKS son nöqtəsi istifadə edin. Bu fərqli müştəri API-sidir, HttpClient.Builder.proxy-nin alternativ yazılışı deyil. Təyinat URL-ni saxlayın ki, HTTPS nəzərdə tutulan vebsaytı tanımağa davam etsin.
java.net.http-i saxlamaq məcburiyyətində olan tətbiq bunun əvəzinə uyğun HTTP proxy son nöqtəsindən istifadə edə bilər, o cümlədən sonrakı SOCKS bağlantısını idarə edən təsdiqlənmiş adapter də daxil olmaqla. Bu, real komponent və daha bir giriş sərhədi əlavə edir; 8080 portunu 1080-ə dəyişmək bu çevirməni təmin etmir.
Seçimi və mənimsəməni görünən saxlayın
Həm seçicinin nəticəsini, həm də müştərinin həqiqətən açdığı bağlantını qeyd edin. Birincisi siyasət çıxışını təsvir edir; ikincisi tətbiqin onu mənimsəyib-mənimsəmədiyini müəyyən edir.
Nəticələri istifadə olunan icra mühiti və nəql ilə bağlayın. Bir soket tətbiqinin istifadə etdiyi JVM SOCKS xassələri hər HTTP kitabxanasının onlara müraciət edəcəyinə zəmanət deyil. Marşrut məcburi olduqda, zahirən uğurlu birbaşa sorğunu qəbul etməzdən əvvəl dəstəklənməyən proxy tipi aşkar edilməlidir.