0
基本信息:
我試圖讓一個Java應用程序通過SOCKS代理連接到一個目標。我發現this瞭解如何配置代理設置,這很重要,因爲我無法更改源代碼來配置代理使用情況。但是,應用程序沒有通過代理連接。JVM和SocksProxy設置在Ubuntu 16.04上不起作用
詳細
我用一個小的自定義類測試這一點,這隻能有一個主要方法,並做到這一點:
public static void main(String... strings) throws URISyntaxException, IOException {
URL url = new URI("http", null, "localhost", 9998, null, null, null).toURL();
System.out.println("opening connection to " + url.toString());
URLConnection c = url.openConnection();
System.out.println("connecting");
c.connect();
System.out.println(c.getContentLength());
System.out.println(c.getContentType());
}
然後,我開始使用java <properties> <classname>
該類。 屬性我已經試過到目前爲止(單一及複合):
socksPropertyHost=localhost
socksPropertyPort=9999
http.proxySet=true
http.proxyHost=localhost
http.proxyPort=9999
https.proxySet=true
https.proxyHost=localhost
https.proxyPort=9999
proxySet=true
proxyHost=localhost
proxyPort=9999
java.net.useSystemProxies=true
同樣,我添加了這些命令行,然後添加到我的環境中,在jre/lib/net.properties
設置的值和噘嘴他們轉換成逗號分隔的列表,然後在bash腳本中以-D$JAVA_OPTS
的形式傳遞。
所有的連接用
Exception in thread "main" java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
at sun.net.www.http.HttpClient.New(HttpClient.java:339)
at sun.net.www.http.HttpClient.New(HttpClient.java:357)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1202)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1138)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1032)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:966)
at sandbox.Sandbox.main(Example.java:16)
基本上拒絕了,這個問題(S)這裏是/是這個/這些:
難道我做錯了什麼嗎?這是一個錯誤?它只是我的系統嗎? 任何答案將不勝感激。
-D不帶逗號分隔的列表。您需要爲每個要設置的屬性設置一個-D。 –
好的,澄清一下:我在命令行中添加了每一個變量(通過'-Done,-Dtwo,-Dthree'),我將它們添加到'application.properties'中,將它們添加到環境中,set 'net.properties'中的每個值,並且在絕望中嘗試了一個bash腳本,它將它們組合成一個單獨的字符串。 –
您的場景無法從您的問題中輕鬆複製,並且我不認爲所有連接都被完全相同的堆棧跟蹤拒絕。他們實際上是 –