我尝试在 TOR 网络中实现与隐藏服务的套接字连接。我有它隐藏服务的洋葱域名主机名。我在设备上安装了 Orbot。我使用代理 Orbot 创建用于连接到隐藏服务的套接字。我是这样做的:
Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(
"localhost", 9050));
clientSocket = new Socket(proxy);
InetSocketAddress remoteAddress = InetSocketAddress.createUnresolved(HS_DOMEN, HS_PORT);
if (remoteAddress.isUnresolved())
Log.i("LOG", "address unresolved!!!");
Log.i("LOG", "start connect to inet addr");
clientSocket.connect(remoteAddress, CONNECT_TIMEOUNT);
Log.i("LOG", "after connect ward");
if (clientSocket.isConnected()) {
Log.i("LOG", "socket connected");
}
套接字成功理解代理设置,但是当我尝试连接到隐藏服务时出现错误:
11-06 14:34:57.215: W/System.err(32101): java.net.UnknownHostException: Host is
unresolved: *.onion
11-06 14:34:57.215: W/System.err(32101): at java.net.Socket.connect(Socket.java:825)
11-06 14:34:57.215: W/System.err(32101): at ru.dtlbox.example.clientsample.MainActivity.connectSocket(MainActivity.java:79)
11-06 14:34:57.215: W/System.err(32101): at ru.dtlbox.example.clientsample.MainActivity$2.run(MainActivity.java:128)
11-06 14:34:57.215: W/System.err(32101): at java.lang.Thread.run(Thread.java:856)
Onion 主机名是有效的,因为我尝试使用 Orweb 对其进行测试,一切正常。80端口上有nginx服务器。但是我的 Socket 无法解析这个洋葱地址。我认为这是因为 InetAddress 类无法解析传递的主机名的 IP 地址。但是我怎样才能设置正确的设置或使用不同的连接方式?有什么想法吗?非常感谢!