使用
socksNonProxyHosts系统属性;它没有记录,但存在于Oracle JDK 8至11中,也可能存在于其他版本中。
java -DsocksProxyHost=mySocksServer -DsocksProxyPort=8888 -DsocksNonProxyHosts=127.0.0.1 [...]
TL; DR
该属性
socksNonProxyHosts在sun.net.spi.DefaultProxySelector的源代码中找到(感谢@rince)
但是,有关Java网络属性的文档暗示此功能不存在,因此其使用可能不稳定:
以这种方式指定SOCKS代理后,将尝试通过代理尝试 所有 TCP连接。
(添加了强调)
您也许可以使用
Proxyand和/或
ProxySelectorclass,但是:
ProxySelector
仅在您的应用程序用于URLConnection
建立连接时适用。Proxy
适用于任意套接字……但前提是您可以将Proxy
对象作为参数提供给相关的Socket
构造函数调用。(并且您将需要逻辑来提供不同的Proxy
对象,具体取决于您的代码尝试连接的对象。)
此RFE存在一个错误。该票证提出了另一种解决方法。显然,如果该
java.net.useSystemProxies属性为
true,则(在某些平台上)默认代理选择器将考虑在适当的系统代理设置中指定的排除主机。



