Sockets 使用Socks代理的HTTP调用
我想使用socks代理来访问服务器。但有些事情是不对的。我有一份委托书,委托书的所有者声称这是一份socks委托书 我简化了我的问题,现在尝试使用下面的代码访问google.comSockets 使用Socks代理的HTTP调用,sockets,proxy,socks,Sockets,Proxy,Socks,我想使用socks代理来访问服务器。但有些事情是不对的。我有一份委托书,委托书的所有者声称这是一份socks委托书 我简化了我的问题,现在尝试使用下面的代码访问google.com URL url = new URL("https://www.google.com"); URLConnection connection = null; SocketAddress proxySocketAddress1 = new InetSocketAddress("XXXXXXXXXX", 8
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();
无法与google建立连接。但是,如果我使用代理类型作为HTTP,那么它是有效的,也就是说,如果我将上述代码的第4行替换为
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxySocketAddress1);
我尝试使用浏览器(chrome)访问google.com,并指定了与“socks proxy”和“http proxy”相同的代理,之后就可以打开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);
有什么建议我可以试试吗?我想这个代理不是socks代理,而是HTTP代理,因为
- 如果您将它用作http代理,它就可以工作,而不能用作socks代理
- 如果您在google中将它指定为http和socks代理,它可能只会对其他协议(https、ftp…)使用socks代理设置,并对http使用http代理设置,因此它也可以作为http代理在那里工作
- 80xx是http代理的典型端口(例如80008001808081),因为80是http的“正常”端口,所以socks代理通常使用类似于1080的端口