【发布时间】:2014-02-06 17:01:49
【问题描述】:
我想使用 socks 代理访问服务器。但有些事情是不对的。我有一个代理,代理的所有者声称它是一个 socks 代理。
我简化了我的问题,现在尝试使用以下代码访问 google.com。
URL url = new URL("https://www.google.com");
URLConnection connection = null;
SocketAddress proxySocketAddress1 = new InetSocketAddress("XXXXXXXXXX", 8081);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, proxySocketAddress1);
connection = url.openConnection(proxy);
connection.setConnectTimeout(150000);
connection.connect();
无法与谷歌建立连接。但是,如果我使用 PROXY 类型作为 HTTP,那么它可以工作,即如果我将上述代码的第 4 行替换为
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxySocketAddress1);
我尝试使用浏览器 (chrome) 访问 google.com,并指定与“socks 代理”和“http 代理”相同的代理,然后能够打开 google。
不确定给定代理何时在浏览器中用作 SOCKS 代理,那么为什么它在代码中不起作用?
如果我得到这个工作,那么最终我想做一些类似的事情:
SocketAddress socketAddress = new InetSocketAddress(proxyHostname,proxyPort);
Proxy socketProxy = new Proxy(Proxy.Type.SOCKS, socketAddress);
socket = new Socket(socketProxy);
InetSocketAddress socketAddress = new InetSocketAddress(hostIP,hostPort);
socket.connect(socketAddress,100000);
有什么建议可以试试?
【问题讨论】: