JDK 25 HttpClient ProxySelector-дің SOCKS маршруттарын пайдаланбайды
ProxySelector қайтаратын түрге ғана сүйенудің орнына SOCKS-ті шынымен қолдайтын Java HTTP тасымалын таңдаңыз.
Java прокси нысаны маршрутты сипаттайды. Желі клиенті қандай маршрут түрлерін пайдалана алатынын әлі де өзі шешеді. Бұл қолжетімді соңғы нүкте SOCKS тілінде сөйлеп, қолданба java.net.http.HttpClient қолданғанда маңызды.
Осында қарастырылған JDK 25 іске асырылымында HTTP клиентінің сұраныс коды селектордан HTTP кандидатын қабылдайды. SOCKS кандидаты оны SOCKS келіссөзіне мәжбүрлемейді; іске асырылым проксисіз жалғасуы мүмкін. Сондықтан сәтті жауап теңшелетін селектордың SOCKS жазбасы пайдаланылғанына жеткілікті дәлел емес.
Алдымен тасымалды таңдаңыз
URLConnection-ға негізделген қолданыстағы қолданба үшін қосылымды ашқанда протокол өңдеушісіне қолдау көрсетілетін айқын прокси беруге болады:
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);
Рұқсат етілген жалпы мақсаттарға арналған сынақтар үшін қызметіңізден немесе SOCKS проксилер тізімінен сәйкес SOCKS соңғы нүктесін пайдаланыңыз. Бұл басқа клиенттік API, HttpClient.Builder.proxy-дің балама жазылуы емес. HTTPS мақсатты сайтты тануды жалғастыруы үшін межелі URL-ді сақтаңыз.
java.net.http сақтауға міндетті қолданба оның орнына үйлесімді HTTP прокси соңғы нүктесін пайдалана алады, оның ішінде әрі қарайғы SOCKS қосылымын өңдейтін мақұлданған адаптер бар. Бұл нақты құрамдас және тағы бір қатынау шекарасын қосады; 8080 портын 1080-ге өзгерту бұл аударманы бермейді.
Таңдау мен қабылдауды көрнекі ұстаңыз
Селектордың нәтижесін және клиент шын мәнінде ашатын қосылымды да жазып алыңыз. Біріншісі саясат шығысын сипаттайды; екіншісі іске асырылым оны қабылдағанын айқындайды.
Қорытындыларды пайдаланылған орындалу ортасына және тасымалға байлаңыз. Бір сокет іске асырылымы қолданатын JVM SOCKS қасиеттері әрбір HTTP кітапханасы оларға жүгінеді деген уәде емес. Маршрут міндетті болса, қолдауға жатпайтын прокси түрі сырттай сәтті тікелей сұранысты қабылдамас бұрын анықталуы керек.