
https://play.google.com/store/apps/details?id=com.cloudmonad.fw
前情提要: Android 为什么不和 iOS 一样需要用户动态确认联网权限
研究了一通后决定自己写一个,和一众类似 App 一样,用的是 VPN 实现,底层用 Rust 实现,UI 用 Flutter 。
原理: 创建 Vpn 服务拦截网络流量,根据 socket 识别对应 App,弹出对话框让用户确认授权。
Vpn 部分是从另一个 rust 项目搬过来的,主要工作量在调 Flutter UI,特别是那个弹出对话框,一开始单独实现成一个 FlutterActivity,但每次弹出时需要几秒加载,尝试缓存对应 FlutterEngine 未果。目前的实现是复用主界面的 FlutterActivity,用路由区分。实现了通知秒现,但如果用户此时在主程序设置界面会被打断。 不知是否有更好的方案
五一开发完备用机上跑了几个星期,还算稳定,顺便上了 Play Store,今天发现审核完了,也算是有自己 App 的人了:)
感兴趣的 tx 可以试用一下
注意事项:目前只在我自己的手机上测试过(小米 10 lite ) MIUI 12/Android 11,由于使用了 getConnectionOwnerUid 最低支持版本为 Api 29(Android 10 )
1 Rxianbei 2021 年 5 月 20 日 via Android 很棒的想法 |
2 yitingbai 2021 年 5 月 20 日 意思是不是所有的网络流量都得经过你的 VPN 软件? 数据安全不能仅靠开发者的良心吧 |
3 murmur 2021 年 5 月 20 日 安卓的联网权限不是动态控制的,但是可以全局控制啊,ios 也做不到按请求控制联网吧 |
4 john6lq 2021 年 5 月 20 日 via iPhone Windows 也没有,有空可以做一个 |
5 cache OP |
7 1041412569 2021 年 5 月 20 日 感觉,这 APP 需要一个开关 |
9 ikas 2021 年 5 月 20 日 之前一直在用 NetGuard,与你这个原理一样,后来换了 afwall,现在 lineageos18.1 自带控制了...... |
10 cache OP @1041412569 哈哈,是的,后面加上 |
11 cache OP @ikas 是的,afwall 需要 root 权限吧,看了一下好像是用的是 iptables lineageos18.1 自带控制是怎么样的? MIUI 也能设置控制 App 联网权限,但每次点开比较麻烦,而且很多系统 App 不能设置 |
12 sephinh 2021 年 5 月 20 日 via iPhone Android 自带不是就能分别控制移动网络和 Wi-Fi 的接入了吗 |
14 AoEiuV020 2021 年 5 月 20 日 卵用,只会导致 bug,开发者不可能去适配你的确认授权,只会默认一启动就有网, |
16 hs0000t 2021 年 5 月 20 日 via Android 类似于火绒的联网控制? |
18 AoEiuV020 2021 年 5 月 20 日 @cache 我意思是,ios 开发时就必须考虑 app 首次启动用户授权前没有网络的情况,针对这种情况做一些处理,必要时一些请求失败要等授权后重试,安卓开发者不会考虑这个,以为有网却没网就可能导致 bug, |
19 Cavolo 2021 年 5 月 20 日 via iPhone iOS 我求求不要有这功能 |
21 treblex 2021 年 5 月 20 日 请问下楼主,rust 和 flutter 交互方便嘛 之前尝试过 go mobile,流程应该是 build farmework,添加到原生项目里,然后再写 methodChannel,感觉不是特别方便 |
22 robinchina 2021 年 5 月 20 日 安卓不是可以单独设置程序网络权限么? |
23 lovelive1024 2021 年 5 月 20 日 魅族 18 在 app 首次启动的时候就会让你授权是否允许联网 |
24 yanyumihuang 2021 年 5 月 20 日 如何跟别的 vpn 共存呢?我记得 cfa 是支持用 process-name 匹配包名来进行路由的。 |
25 yanyumihuang 2021 年 5 月 20 日 cfa 是指 clash for android |
26 cache OP @treblex 非常棒,我已经爱上他们了,这也是我写这个 app 的最大动力 @ily433664 魅族这个功能就是我想实现的,但和 MIUI 一样,他应该不会限制系统自己的网络吧,从保护隐私的角度,你的隐私最不希望被了解你的人知道,而系统是最了解你手机的人了,需要被重点盯住。 @yanyumihuang 无法和其他 vpn 共存,貌似可以通过工作空间多开 VPN,没有深入研究,这个 App 主打使用简单,不用配置。 |
27 Thinkerous 2021 年 5 月 20 日 GlassWire Data Usage Monitor https://play.google.com/store/apps/details?id=com.glasswire.android |
28 lovelive1024 2021 年 5 月 20 日 @cache 按照你这么说,既然我不相信手机厂商,为什么会相信你这个 app ? |
29 HangoX /div> 2021 年 5 月 20 日 因为 iOS 的联网控制只有国内版本才有,国外是没有的,换个想法就是这货应该是国内 rom 做了 |
30 gggccc44 2021 年 5 月 20 日 Analytics 谷歌和苹果都有啊,话说国行 iPhone 这个请求联网功能简直了。。。 |
31 q197 2021 年 5 月 20 日 好像还有一种实现是基于 iptable,当然需要 root,好处是设置完后这个防火墙 app 关了也无所谓,坏处是重启失效需要 app 开机再次设置适配一下 |
32 cache OP |
33 Cloutain 2021 年 5 月 20 日 很不错哦 |
34 woodensail 2021 年 5 月 20 日 @ily433664 因为在现有的环境下,app 开发者没有能力做到中间人窃听。 就如同我不信任微信,但是信任微信小程序开发团队不会窃取我的隐私。因为微信早就把所有和隐私的口子堵完了,小程序压根没能力碰到涉及隐私的内容。 |
35 Veneris 2021 年 5 月 20 日 那开了这个,岂不是没法开小飞机了 |
36 lovelive1024 2021 年 5 月 20 日 @woodensail 按照楼主的方式,这个 app 至少知道你访问了什么,如果你觉得这个不是隐私当就我没说 |
37 woodensail 2021 年 5 月 20 日 @ily433664 是啊,也仅此而已,不像系统本身,不仅能知道你访问了什么网站,还能知道你访问了什么内容,还能篡改你访问的内容。 如果你觉得这两种没有区别就当我没说。 |
38 823805669hehe 2021 年 5 月 24 日 @cache 楼主,这个 APP 的源码有计划公开吗?否则不是自己构建的很难让人放心啊 |
39 cache OP @823805669hehe 暂时还没有,主要是核心部分代码是其他恰饭项目的 你可以用 xprivacy 监控一下,除了启动 vpn 相关,没有调用任何其他 Android 系统接口,连存储权限都没有申请 |
40 feifeichen 2021 年 5 月 24 日 试用了一下,发现会出现大部分 app 识别不到的情况会导致默认关网并且打不开。希望楼主可以优化下,挺好用的 |