gpt4 book ai didi

Android 套接字主机未解析 *.onion

转载 作者:太空狗 更新时间:2023-10-29 15:08:06 24 4
gpt4 key购买 nike

我尝试将套接字连接到 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 地址。但是我怎样才能设置正确的设置或使用不同的连接方式呢?有什么想法吗?非常感谢!

最佳答案

您的问题很久以前就被问过了。我很惊讶连一个答案都没有给出。我认为也许您现在可能已经找到了解决方案。但是,以下答案适用于那些将来可能会寻求解决此问题并找到这篇文章的人。

我最近在尝试使用洋葱地址通过 tor 将客户端套接字连接到服务器套接字时遇到了同样的问题。我花了很多时间研究 Gaurdian 项目的开源程序代码 link .

当我查看现已弃用的 Orlib 库时,我注意到正在使用一个名为 jsocks 的库。我在 http://sourceforge.net/projects/jsocks/ 找到了图书馆,将其作为库安装到android studio中,并使用Socks5代理和SocksSocket连接成功。我还不确定它为什么有效,但它确实有效。

这里是连接代码,.onion地址被遮盖了。

 private void connect(){
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Orbot Running: " + OrbotHelper.isOrbotRunning(getApplicationContext()));

int proxyPort = 9050;
String proxyHost = "127.0.0.1";
String remoteHost = "[address].onion";
int remotePort = 12345;

try {
socks5Proxy = new Socks5Proxy(proxyHost, proxyPort);
socks5Proxy.resolveAddrLocally(false);
socket = new SocksSocket(socks5Proxy, remoteHost, remotePort);

out = new PrintWriter(socket.getOutputStream(), true);
receive();
}catch (IOException e){
e.printStackTrace();
}
}
}).start();
}

关于Android 套接字主机未解析 *.onion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19810179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com