clash 或 sub 中的流量请求记录的功能是怎么实现的?

2021-05-08 09:58:40 +08:00
 Lunatic1

最近在用 clash for android 或者 sub 时因为流量请求记录或者日志功能做调试很方便就想研究一下这个功能如何实现的,但是这两个 APP 好像都不开源,有大佬知道如果实现吗?
如果不借助代理模式只在 android 中的 fk 中做类似的功能是不是也要做类似代理的流量监控的方式?

6117 次点击
所在节点    Android
11 条回复
Helsing
2021-05-08 10:30:21 +08:00
我记得是用的一个 VPN 接口,另外 Clash for Android 是开源的:

https://github.com/Kr328/ClashForAndroid
yov123456
2021-05-08 10:31:55 +08:00
这个是 clash core 做的 看 clash core 的代码吧
GoLand
2021-05-08 10:39:08 +08:00
TUN/TAP,虚拟网卡
Trim21
2021-05-08 10:40:19 +08:00
@Helsing #1 只是有仓库 不开源
Helsing
2021-05-08 10:43:13 +08:00
@Trim21 #4
估计是最近移除,可能是要在 Google play 上正式版了,你可以看旧的 commit 是有代码的
yianing
2021-05-08 10:43:22 +08:00
clash 接管域名解析,内部有 DNS 和 rDNS 模块
FaiChou
2021-05-08 10:51:57 +08:00
了解过 iOS 下的大致实现逻辑, iOS 下有 NetworkExtension, 三种代理方法:

- 网络层 API
- 传输层 API
- 应用层 API

大部分都是采用应用层 API, 所有应用层网络请求都可以接管, 如果应用走系统代理(当然应用可以通过一些方法绕过系统代理), 它的请求就可以被捕获到, 所以会有记录, 也可以被处理. 你可以沿着下面这个链接看一下相关的 API:

https://developer.apple.com/documentation/networkextension/neappproxytcpflow/1406311-readdata
ysc3839
2021-05-08 11:28:13 +08:00
@Helsing 不是最近了,印象中几个月前 Clash for Android 就改为闭源的了。
newmlp
2021-05-08 11:32:15 +08:00
既然人家都接管你所有流量了,能分析出请求域名很正常,即使是 https 加密,请求域名是加密不了的
wanguorui123
2021-05-08 16:36:28 +08:00
VPN 代理层
AoEiuV020
2021-05-08 16:57:09 +08:00
clash for android 以前是开源的,我这有个 fork,
https://github.com/AoEiuV020/ClashForAndroid

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/775577

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX