Как установить nonProxyHosts для прокси-сервера SOCKS
Я хочу, чтобы nonProxyHosts
список для прокси SOCKS5, т. е. список имен хостов, к которым должно использоваться прямое соединение.
как oracle docs описать, есть варианты с именем http.nonProxyHosts
и ftp.nonProxyHosts
чтобы установить исключения прокси для HTTP и FTP, но нет конкретной настройки для прокси SOCKS.
пробовал http.nonProxyHosts
, но это не влияет на соединения SOCKS.
прокси-сервер SOCKS настраивается через:
System.setProperty("socksProxyHost", "192.168.10.10");
System.setProperty("socksProxyPort", "3128");
но в результате даже соединения, ДБ:localhost
используют прокси-сервер SOCKS, что недопустимо.
Как это можно использовать? Как я могу исключить некоторые хозяева из proxified соединения?
1 ответов
на документация для сетевых свойств Java говорит следующее:
как только прокси-сервер SOCKS указан таким образом,все TCP-соединения будут выполняться через прокси-сервер.
(Курсив)
нет никакого положения для установки хостов без прокси через свойства socks.
вы могли бы использовать Proxy
и/или ProxySelector
классы, но:
ProxySelector
применимо, только если ваше приложение используетURLConnection
для установления соединений.Proxy
применимо для произвольных сокетов ... но только если вы можете поставитьProxy
объект в качестве параметра для соответствующихSocket
вызовы конструктора. (И вам понадобится логика, чтобы поставить разныеProxy
объекты в зависимости от того, что ваш код пытается подключиться.)
есть выдающийся RFE для этого:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=5001942
билет предлагает другой обходной путь. По-видимому, если java.net.useSystemProxies
недвижимость true
, затем (на некоторых платформах) селектор прокси по умолчанию будет уважать исключать хосты, указанные в соответствующих настройках прокси-сервера системы.