2012-06-08 85 views
0

我在(測試)下面的代碼Android項目:Android的SOCKS代理

 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); 

然後,我實現了一個SOCKS服務器偵聽端口1080

我的問題是,在SOCKS4連接請求,目標地址和端口不是「ip for google」:80而是127.0.0.1:1080,即代理地址。

如果我返回OK,我開始獲取HTTP數據。

我做錯了什麼或者SOCKS客戶端有錯誤嗎?

+0

我在哪裏可以得到SOCKS版本5庫用於我的Android應用程序? 你能告訴我嗎 – Noman

回答

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