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

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

  •  
  •   Lunatic1 · 36 天前 · 1321 次点击
    这是一个创建于 36 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    g80wtO.jpg

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

    https://github.com/Kr328/ClashForAndroid
    yov123456
        2
    yov123456   36 天前
    这个是 clash core 做的 看 clash core 的代码吧
    GoLand
        3
    GoLand   36 天前
    TUN/TAP,虚拟网卡
    Trim21
        4
    Trim21   36 天前
    @Helsing #1 只是有仓库 不开源
    Helsing
        5
    Helsing   36 天前 via iPhone
    @Trim21 #4
    估计是最近移除,可能是要在 Google play 上正式版了,你可以看旧的 commit 是有代码的
    yianing
        6
    yianing   36 天前 via Android
    clash 接管域名解析,内部有 DNS 和 rDNS 模块
    FaiChou
        7
    FaiChou   36 天前
    了解过 iOS 下的大致实现逻辑, iOS 下有 NetworkExtension, 三种代理方法:

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

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

    https://developer.apple.com/documentation/networkextension/neappproxytcpflow/1406311-readdata
    ysc3839
        8
    ysc3839   36 天前 via Android
    @Helsing 不是最近了,印象中几个月前 Clash for Android 就改为闭源的了。
    newmlp
        9
    newmlp   36 天前
    既然人家都接管你所有流量了,能分析出请求域名很正常,即使是 https 加密,请求域名是加密不了的
    wanguorui123
        10
    wanguorui123   36 天前
    VPN 代理层
    AoEiuV020
        11
    AoEiuV020   36 天前
    clash for android 以前是开源的,我这有个 fork,
    https://github.com/AoEiuV020/ClashForAndroid
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2082 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:47 · PVG 22:47 · LAX 07:47 · JFK 10:47
    ♥ Do have faith in what you're doing.