android SOCKS代理

时间:2012-06-08 15:31:38

标签: android socks

我的(测试)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客户端有错误吗?

1 个答案:

答案 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代理。