V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Moonkin
V2EX  ›  宽带症候群

我发现代理客户端喜欢自己实现一遍协议

  •  
  •   Moonkin · 5 天前 via Android · 3035 次点击
    比如 clash meta ,singbox ,他们可以支持 vless 等各种协议 但是却有可能跟不上那些协议的最新版本。比如这两好像都不支持 xhttp 。

    他们为什么不直接把这些协议对应的可执行文件打包到项目里面,直接调用岂不是省事?
    13 条回复    2025-04-01 10:23:00 +08:00
    phpc
        1
    phpc  
       5 天前
    v2rayNG 就是直接调用其他可执行文件的
    morpheuszero2023
        2
    morpheuszero2023  
       5 天前
    开源社区的东西有个问题,就是开发者偶尔会在新版本中修改 API ,或者把配置文件的参数改了,导致原来能用的,更新之后就不能用了。
    xiaozecn
        3
    xiaozecn  
       5 天前 via Android
    @morpheuszero2023 就比如最近上游 GEO 规则更改了一个规则的名称,把 geosite:category-ai-chat-!cn 更名为 geosite:category-ai-!cn 。😂
    Kinnice
        4
    Kinnice  
       5 天前 via Android
    因为你说的这些代理客户端都是针对某种内核开发的,对接的也是指定内核的 API 。 因为一个两个特殊的协议搞一个内核大杂烩,对接一堆 api/cmdline ,后台起五六个 core ,不值当也没必要。
    Kinnice
        5
    Kinnice  
       5 天前 via Android
    @morpheuszero2023 可以自己 fork 或者锁版本不更新,不能既要又要吧
    Kinnice
        6
    Kinnice  
       5 天前 via Android   ❤️ 1
    还有就是协议是协议,内核是内核,客户端是客户端,不是一个东西。协议是规范不是实体,内核实现了协议,客户端调用内核。
    tuki
        7
    tuki  
       5 天前 via Android
    这些软件的作者之间有矛盾,所以不太可能集成对方的软件。而且这些软件的开源协议也不一样
    ostrichb
        8
    ostrichb  
       5 天前
    其他的不清楚,但貌似 iOS 的 App 不能集成現有的執行檔,必須自己把協定進行實作(如果說法有誤歡迎糾正)
    w568w
        9
    w568w  
       5 天前   ❤️ 3
    > 为什么不直接把这些协议对应的可执行文件打包到项目里面

    你说的大概是指调库,不是调可执行文件。

    有几个原因:

    1. 各个协议实现的抽象等级不一样,很难统一接口。A 协议开发者发布的库打包了 dns 解析器,B 协议不支持自定义 DNS ,C 协议依赖系统的 TLS 、不支持自定义证书,D 协议完全解离了网络逻辑,要自己实现请求接口……你怎么办?打包在一起,小则行为不一致、令用户迷惑,大则功能完全不能用;

    2. 增加调试成本。现在用户来报告 bug 时,你还得先搞明白到底是你写错了,还是引用的上游库有 bug 。就算不是你的问题,你还得重新向上游报告 bug 、等上游修复、集成新的版本……一套流程下来,用户早就不用了(如果 bug 影响到你自己,你估计也不想用了);

    3. 小圈子政治,这个不仅仅是国内开发者,但国内确实更明显,代理软件这种开发难度高、用户群体大的更是如此。一群小白在一起跪舔一个(顶着二次元头像的)大佬开发者,甚至攻击其他代理软件、嘲笑其他协议,基本是国内一部分代理项目的常态。
    Orzpls
        10
    Orzpls  
       4 天前 via Android
    吐槽 R 主席又不是一天两天了,原因上面的基本都说了。Xray 总搞一些新名词,但其实是别人已经实现的东西,搞得像它自己发明的样,这样不好,其它还有比如代码问题,实现某些东西如屎山。SB 这帮人理念不同没法和他们一起玩。
    lovestudykid
        11
    lovestudykid  
       4 天前
    @xiaozecn 这个完全不影响,分流自己实现,传输层直接调用官方实现就行了
    shunia
        12
    shunia  
       4 天前
    使用 mihomo 内核的就基本是你说的这种方式啊,大部分情况下只需要更新 mihomo 就可以了。
    v2rayN 也是调用可执行文件的方式,安装目录里有各种不同协议的二进制文件。

    singbox 是因为它搞自己的协议吧?所以想把其他协议都融合到自己的协议里,统一支持和管理。
    clash meta 我记得好像也有自己的 meta 内核?
    MacsedProtoss
        13
    MacsedProtoss  
       3 天前 via iPhone
    @shunia 你错了 人家说的就是 为啥 mihomo 这类要自己实现 ssclient vmess vless 之类的….
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2700 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 13:57 · PVG 21:57 · LAX 06:57 · JFK 09:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.