Java开发Android应用:如何检测Onion URL是否存活?
嘿,刚好做过类似的需求!因为Onion URL是Tor网络独有的,普通的Java/Android网络库(比如OkHttp、HttpURLConnection)默认没法直接访问,得用支持Tor代理的方案或者专门的Tor相关库。下面给你几个实用的选项:
方案1:OkHttp + Tor本地代理(依赖Orbot)
这是最轻量化的方案,前提是用户设备上已经安装了Orbot(Tor官方的Android客户端),它会在本地提供SOCKS5代理(默认端口9050或9150)。你只需要配置OkHttp通过这个代理访问Onion地址:
// 配置Tor SOCKS代理 Proxy torProxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", 9050)); OkHttpClient torClient = new OkHttpClient.Builder() .proxy(torProxy) .connectTimeout(30, TimeUnit.SECONDS) // Tor连接可能慢,设置合理超时 .build(); // 用HEAD请求检测存活(比GET更轻量,只获取响应头) Request checkRequest = new Request.Builder() .url("http://your-target.onion") .head() .build(); try (Response response = torClient.newCall(checkRequest).execute()) { boolean isOnionAlive = response.isSuccessful(); // 2xx状态码即为存活 // 处理检测结果 } catch (IOException e) { // 连接失败:可能URL无效、Tor未启动,或者网络问题 e.printStackTrace(); }
如果用户没装Orbot,你可以引导他们安装,或者用下面的方案自己集成Tor服务。
方案2:自行集成Tor服务到应用
如果不想依赖用户安装第三方APP,可以把Tor的二进制文件和相关库集成到你的Android项目里,比如用第三方封装库tor-android:
- 先在项目的
build.gradle添加依赖:
implementation 'com.github.miclle:tor-android:0.4.7.10'
- 启动Tor服务并配置代理:
TorService torService = new TorService(getApplicationContext()); torService.startTor(new TorService.OnTorStartedListener() { @Override public void onTorStarted(int socksPort) { // Tor启动成功,拿到动态分配的SOCKS端口 Proxy torProxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", socksPort)); OkHttpClient torClient = new OkHttpClient.Builder() .proxy(torProxy) .build(); // 这里执行Onion URL的存活检测逻辑(和方案1一致) } @Override public void onTorStartFailed(Exception e) { // Tor启动失败,比如权限不足、资源不够,需要处理错误 e.printStackTrace(); } });
这个方案的好处是无需用户额外操作,但要注意:
- Tor第一次启动可能需要1-2分钟建立节点连接,要给用户加载提示
- 需在
AndroidManifest.xml添加必要权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 存储Tor节点数据 -->
关键注意事项
- 优先用
HEAD请求:检测存活不需要获取完整页面内容,HEAD请求只返回响应头,更节省带宽和时间 - 超时设置:Tor网络连接通常比普通网络慢,建议把连接超时设置为30秒以上
- 重试机制:如果第一次请求失败,可以重试1-2次,排除临时节点堵塞的情况
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

