首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从android应用程序“tor.so”运行net::ERR_NAME_NOT_RESOLVED

从android应用程序“tor.so”运行net::ERR_NAME_NOT_RESOLVED
EN

Stack Overflow用户
提问于 2021-11-03 12:08:38
回答 1查看 392关注 0票数 2

我正在用API 29 Android模拟器编写一个电容应用程序进行测试,我使用的是来自https://www.npmjs.com/package/@start9labs/capacitor-tor的插件电容器

我修改了插件,使它现在从jnilibs文件夹中执行tor,这是Api级别29+所必需的,它似乎运行正常,如日志所示:

代码语言:javascript
运行
复制
D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 7 8
I/ConnectionChangeReceiver: Switching to ONLINE mode
D/eglCodecCommon: setVertexArrayObject: set vao to 1 (1) 7 4
D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 7 8
D/eglCodecCommon: setVertexArrayObject: set vao to 1 (1) 7 4
D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 7 8
I/t*.p*.OnionProxyManager: Enabling network: true
I/*oxyManagerEventHandler: message: severity: NOTICE, msg: Bootstrapped 10% (conn_done): Connected to a relay
V/Capacitor/TorPlugin: Notifying listeners for event torInitProgress
D/Capacitor/TorPlugin: No listeners found for event torInitProgress
D/eglCodecCommon: setVertexArrayObject: set vao to 1 (1) 7 4
D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 7 8
D/eglCodecCommon: setVertexArrayObject: set vao to 1 (1) 7 4
D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 7 8
I/*oxyManagerEventHandler: message: severity: NOTICE, msg: Bootstrapped 14% (handshake): Handshaking with a relay
V/Capacitor/TorPlugin: Notifying listeners for event torInitProgress
D/Capacitor/TorPlugin: No listeners found for event torInitProgress
I/*oxyManagerEventHandler: message: severity: NOTICE, msg: Bootstrapped 15% (handshake_done): Handshake with a relay done
V/Capacitor/TorPlugin: Notifying listeners for event torInitProgress
D/Capacitor/TorPlugin: No listeners found for event torInitProgress
I/*oxyManagerEventHandler: message: severity: NOTICE, msg: Bootstrapped 75% (enough_dirinfo): Loaded enough directory info to build circuits
V/Capacitor/TorPlugin: Notifying listeners for event torInitProgress
D/Capacitor/TorPlugin: No listeners found for event torInitProgress
I/*oxyManagerEventHandler: OR connection: status: CONNECTED, orName: $8ACD73BD9BDD5E5AFC97169C5837C5E0F732A2CF~SkynetW
I/*oxyManagerEventHandler: message: severity: NOTICE, msg: Bootstrapped 90% (ap_handshake_done): Handshake finished with a relay to build circuits
V/Capacitor/TorPlugin: Notifying listeners for event torInitProgress
D/Capacitor/TorPlugin: No listeners found for event torInitProgress
I/*oxyManagerEventHandler: message: severity: NOTICE, msg: Bootstrapped 95% (circuit_create): Establishing a Tor circuit
V/Capacitor/TorPlugin: Notifying listeners for event torInitProgress
D/Capacitor/TorPlugin: No listeners found for event torInitProgress
I/*oxyManagerEventHandler: OR connection: status: CONNECTED, orName: $6429B0D703EB90A18528F9F8B843504AA27765C6~rinderwahnRelay37L
I/*oxyManagerEventHandler: message: severity: NOTICE, msg: Bootstrapped 100% (done): Done
V/Capacitor/TorPlugin: Notifying listeners for event torInitProgress
D/Capacitor/TorPlugin: No listeners found for event torInitProgress
D/TorPlugin: Finishing off tor. Started successfully: true

作为一个30秒后的测试,我再次尝试启动tor,它已经按照预期运行了:

代码语言:javascript
运行
复制
V/Capacitor/Plugin: To native (Capacitor plugin): callbackId: 51286662, pluginId: TorPlugin, methodName: start
V/Capacitor: callback: 51286662, pluginId: TorPlugin, methodName: start, methodData: {"socksPort":9250,"controlPort":9251,"initTimeout":15000}
D/TorPlugin: Kicking off tor
I/t*.p*.OnionProxyManager: Tor is already running
I/ConnectionChangeReceiver: Switching to ONLINE mode
I/t*.p*.OnionProxyManager: Enabling network: true
D/TorPlugin: Finishing off tor. Started successfully: true
I/t*.p*.OnionProxyManager: Enabling network: true

所以看起来托尔跑得很准。尽管如此,对于javascript部分中的socket.io和socket.io代理的浏览器序列化版本所提出的请求,我还是得到了socket.io:

代码语言:javascript
运行
复制
var agent = new SocksProxyAgent("socks://localhost:9250");
var socket =  await io.connect(onion_v3_address.onion:3000, { agent: agent });
socket.on('connect', async socket => {
            console.log("connected to server");
            // either with send()
            socket.send('hello');            
});

铬调试器中的错误:

代码语言:javascript
运行
复制
GET http://onion_v3_address.onion:3000/socket.io/?EIO=4&transport=polling&t=NpbeiTH net::ERR_NAME_NOT_RESOLVED

(当然,真正的地址被onion_v3_address.onion:3000取代了)

插件是从以下内容开始的:

代码语言:javascript
运行
复制
Capacitor.Plugins.TorPlugin.start({socksPort: 9250, controlPort: 9251, initTimeout: 15000});

怎么啦?在本地主机上没有tor吗?我是否需要使用与本地主机不同的ip?是android阻止了我的请求吗?还有什么能导致这个问题呢?

当然,onion_v3_address.onion:3000上的tor服务器是可以访问的,并且在从linux或windows进行测试时,可以按预期的方式工作。

如果不使用以下代理:

代码语言:javascript
运行
复制
socket = await io.connect('127.0.0.1:9250', {resource: '/onion_v3_address.onion:3000'});

我进入了铬调试器:

代码语言:javascript
运行
复制
Failed to load resource: the server responded with a status of 501 (Tor is not an HTTP Proxy)
(index):1 Access to XMLHttpRequest at 'http://127.0.0.1:9250/socket.io/?EIO=4&transport=polling&t=NpcLcw9' from origin 'http://localhost' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

所以看起来tor确实运行正常,我只是不知道如何从webview中正确地请求tor?!再次声明:使用代理的javascript代码100%用于电子(linux,macOS,win)。它用orbot和cordova合作。但我不想用orbot。

在logcat中,我发现了以下内容:

代码语言:javascript
运行
复制
2021-11-07 09:16:29.800 20411-20411/? W/libtor.so: type=1400 audit(0.0:1271): avc: denied { ioctl } for path="socket:[443934]" dev="sockfs" ino=443934 ioctlcmd=0x894b scontext=u:r:untrusted_app:s0:c162,c256,c512,c768 tcontext=u:r:untrusted_app:s0:c162,c256,c512,c768 tclass=tcp_socket permissive=0 app=com.github.anonym.myapp

这是原因还是与套接字无关?

当输入localhost:9250在Chrome,它显示“这是一个袜子代理.”无论是模拟器还是手机。这意味着tor实际上是全球可用的。

EN

回答 1

Stack Overflow用户

发布于 2021-11-05 18:11:12

若要在尝试解析洋葱域时修复net::ERR_NAME_NOT_RESOLVED错误,代理需要在Tor上执行DNS解析,而不是使用本地DNS解析器。

若要在Tor上获得DNS解析,请更改:

代码语言:javascript
运行
复制
var agent = new SocksProxyAgent("socks://localhost:9250");

至:

代码语言:javascript
运行
复制
var agent = new SocksProxyAgent("socks5h://localhost:9250");

SocksProxyAgentinstantiated with socks://时,由本地解析器执行DNS解析。使用socks5h://告诉代理也要通过代理发送DNS请求,这正是解析洋葱域所需要的。

这也可以防止DNS泄漏,当请求是通过Tor发送,但DNS请求不是。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69824570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档