Moonkin

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

  •  
  •   Moonkin · Mar 30, 2025 via Android · 7787 views
    This topic created in 583 days ago, the information mentioned may be changed or developed.
    比如 clash meta ,singbox ,他们可以支持 vless 等各种协议 但是却有可能跟不上那些协议的最新版本。比如这两好像都不支持 xhttp 。

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

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

    有几个原因:

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

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

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

    singbox 是因为它搞自己的协议吧?所以想把其他协议都融合到自己的协议里,统一支持和管理。
    clash meta 我记得好像也有自己的 meta 内核?
    MacsedProtoss
    MacsedProtoss
    Apr 1, 2025 via iPhone
    13
    @shunia 你错了 人家说的就是 为啥 mihomo 这类要自己实现 ssclient vmess vless 之类的….
    liyunlong5
    liyunlong5
    Apr 4, 2025 via Android
    14
    @shunia 不是搞自己的协议,Singbox 是用 RUST 语言重写代码来实现别人协议的(理论上性能更好),不过 SB 更新的太频繁,配置文件时不时还会更改,这点不太好
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3797 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 05:28 · PVG 13:28 · LAX 21:28 · JFK 00:28
    ♥ Do have faith in what you're doing.