V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Lunatic1
V2EX  ›  Android

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

  •  
  •   Lunatic1 · 2021-05-08 09:58:40 +08:00 · 5479 次点击
    这是一个创建于 1056 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    g80wtO.jpg

    11 条回复    2021-05-08 16:57:09 +08:00
    Helsing
        1
    Helsing  
       2021-05-08 10:30:21 +08:00 via iPhone
    我记得是用的一个 VPN 接口,另外 Clash for Android 是开源的:

    https://github.com/Kr328/ClashForAndroid
    yov123456
        2
    yov123456  
       2021-05-08 10:31:55 +08:00
    这个是 clash core 做的 看 clash core 的代码吧
    GoLand
        3
    GoLand  
       2021-05-08 10:39:08 +08:00
    TUN/TAP,虚拟网卡
    Trim21
        4
    Trim21  
       2021-05-08 10:40:19 +08:00
    @Helsing #1 只是有仓库 不开源
    Helsing
        5
    Helsing  
       2021-05-08 10:43:13 +08:00 via iPhone
    @Trim21 #4
    估计是最近移除,可能是要在 Google play 上正式版了,你可以看旧的 commit 是有代码的
    yianing
        6
    yianing  
       2021-05-08 10:43:22 +08:00 via Android
    clash 接管域名解析,内部有 DNS 和 rDNS 模块
    FaiChou
        7
    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
        8
    ysc3839  
       2021-05-08 11:28:13 +08:00 via Android
    @Helsing 不是最近了,印象中几个月前 Clash for Android 就改为闭源的了。
    newmlp
        9
    newmlp  
       2021-05-08 11:32:15 +08:00
    既然人家都接管你所有流量了,能分析出请求域名很正常,即使是 https 加密,请求域名是加密不了的
    wanguorui123
        10
    wanguorui123  
       2021-05-08 16:36:28 +08:00
    VPN 代理层
    AoEiuV020
        11
    AoEiuV020  
       2021-05-08 16:57:09 +08:00
    clash for android 以前是开源的,我这有个 fork,
    https://github.com/AoEiuV020/ClashForAndroid
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4056 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:16 · PVG 13:16 · LAX 22:16 · JFK 01:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.