来自 SOCKS 服务器的 Android Orbot 格式错误的回复

Posted

技术标签:

【中文标题】来自 SOCKS 服务器的 Android Orbot 格式错误的回复【英文标题】:Android Orbot malformed reply from SOCKS server 【发布时间】:2015-11-20 14:57:13 【问题描述】:

我正在尝试在我自己的 android XMPP 应用上启用 TOR 支持。我正在使用 orbot 作为 TOR 代理,并且我有以下代码来连接应用程序套接字:

socket = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", 9050)));
socket.connect(addr, Config.SOCKET_TIMEOUT * 1000);

但我收到Malformed reply from SOCKS server,即使我的 Orbot 已启动并运行。我相信当应用程序无法访问代理服务器或提到的服务器不是 SOCKS 代理时会引发此错误。

我也试过用jsocks:

Socks5Proxy sProxy = new Socks5Proxy("127.0.0.1", 9050);
sProxy.resolveAddrLocally(false);
String host = account.getServer().toString();
int port = 5222;
System.out.println(host + ":" + port);
try 
    socket = new SocksSocket(sProxy, host, port);
catch(SocksException sock_ex)
    System.err.println("SocksException:"+sock_ex);

System.out.println("here we are");

主机是“jabbim.com” 但是我从来没有到达“我们在这里” println 所以看起来我的应用程序在创建 SocksSocket 时挂在某个地方,但我也没有收到任何错误。当我调试它时,它挂在 jsocks 某处的 impl.getInputStream 上(我相信是PlainSocketImpl)

知道如何解决这个问题吗?

感谢转发

【问题讨论】:

【参考方案1】:

我解决了这个问题

compile "org.igniterealtime.smack:smack-android-extensions:4.1.4"
compile "org.igniterealtime.smack:smack-tcp:4.1.4"

然后使用此代码进行连接:

final Random rndForTorCircuits = new Random();
String user = rndForTorCircuits.nextInt(100000) + "";
String pass = rndForTorCircuits.nextInt(100000) + "";
ProxyInfo proxyInfo = new ProxyInfo(ProxyInfo.ProxyType.SOCKS5, "127.0.0.1", 9050, user, pass);
socket = proxyInfo.getSocketFactory().createSocket(addr.getHostName(), addr.getPort());

通过使用它,您可以获得已经连接到代理的套接字。

【讨论】:

以上是关于来自 SOCKS 服务器的 Android Orbot 格式错误的回复的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Android 的 SOCKit 安全 (SOCKS) 服务器

Android,错误套接字异常 (SOCKS)

在 Android 模拟器中设置 socks 代理

来自 Azure VM 的 SOCKS5 请求

使用 socks4 时的认证方式

ORB_SLAM2_Android