我在我的(测试) android项目中有以下代码:
URL u = new URL("http://www.google.com");
InetSocketAddress sa = InetSocketAddress.createUnresolved("127.0.0.1", 1080);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, sa);
HttpURLConnection conn = (HttpURLConnection) u.openConnection(proxy);然后,我实现了一个监听端口1080的SOCKS服务器。
我遇到的问题是,在SOCKS4连接请求中,目标地址和端口不是"ip for google":80,而是127.0.0.1:1080,即代理地址。
如果我返回ok,我就开始获取HTTP数据。
是我做错了什么,还是SOCKS客户端中有一个bug?
发布于 2013-10-21 20:53:03
我有一个较低级别的解决方案,但可能对您有用:
这对我在rooted Nexus4上运行SSHTunnel的Android4.3上是有效的:
SocketAddress proxyAddr = new InetSocketAddress("127.0.0.1", 1984);
SocketAddress hostAddr = new InetSocketAddress(address, port);
java.net.Proxy proxy = new java.net.Proxy(java.net.Proxy.Type.SOCKS, proxyAddr);
socket = new Socket(proxy);
socket.connect(hostAddr);注意:我也安装了iptables beta,但我不确定是否需要它。
要使其与模拟器一起工作,请将IP更改为10.0.2.2,这是Android在主机上的别名。当然,您必须在您的机器上运行本地SOCKS代理。
https://stackoverflow.com/questions/10951799
复制相似问题