10

100% ワーキング ソックスを使用していますが、アプリケーションから接続できません。

        SocketAddress proxyAddr = new InetSocketAddress("1.1.1.1", 12345);
        Proxy pr = new Proxy(Proxy.Type.SOCKS, proxyAddr);

    try
    {
        HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(pr);
        con.setConnectTimeout(proxyTimeout * 1000);
        con.setReadTimeout(proxyTimeout * 1000);
        con.connect();

        System.out.println(con.usingProxy());
    }
    catch(IOException ex)
    {
        Logger.getLogger(Enter.class.getName()).log(Level.SEVERE, null, ex);
    }

それで、私は何を間違っていますか?HTTPプロキシでHTTPを使用すると、すべてが機能しますが、SOCKSでは機能しません。

4

4 に答える 4

24

本当に簡単です。関連するシステムプロパティを設定し、通常のHttpConnectionを使用する必要があります。

System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "socksProxyHost", "127.0.0.1" );
System.getProperties().put( "socksProxyPort", "1234" );
于 2012-08-25T14:42:56.287 に答える
6

「socksProxyHost」および「socksProxyPort」VM 引数を通知します。

例えば

java -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=8080 org.example.Main
于 2017-11-30T21:59:11.610 に答える
1

またはこの回答: https://stackoverflow.com/a/64649010/5352325

プロキシに接続する必要がある URI がわかっている場合は、低層の ProxySelector を使用することもできます: https://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.html各ソケット接続作成されたら、どのプロキシを使用するかを決定できます。

次のようになります。

public class MyProxySelector extends ProxySelector {
        ...

        public java.util.List<Proxy> select(URI uri) {
        ...
          if (uri is what I need) {
             return list of my Proxies
          }
        ...
        }
        ...
}
 

次に、セレクターを使用します。

public static void main(String[] args) {
        MyProxySelector ps = new MyProxySelector(ProxySelector.getDefault());
        ProxySelector.setDefault(ps);
        // rest of the application
}
于 2020-11-02T16:12:32.950 に答える