我的(测试)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,即代理地址。
如果我回复,我开始获取HTTP数据。
我做错了什么或者SOCKS客户端有错误吗?
答案 0 :(得分:0)
我有一个较低级别的解决方案但可能对您有用:
这适用于Android 4.3在已植根的Nexus 4上,SSHTunnel正在运行:
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代理。