Как установить 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, затем (на некоторых платформах) селектор прокси по умолчанию будет уважать исключать хосты, указанные в соответствующих настройках прокси-сервера системы.