我发现代理客户端喜欢自己实现一遍协议 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Moonkin
V2EX    宽带症候群

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

  •  
  •   Moonkin 262 天前 via Android 5305 次点击
    这是一个创建于 262 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 clash meta ,singbox ,他们可以支持 vless 等各种协议 但是却有可能跟不上那些协议的最新版本。比如这两好像都不支持 xhttp 。

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

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

    有几个原因:

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

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

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

    singbox 是因为它搞自己的协议吧?所以想把其他协议都融合到自己的协议里,统一支持和管理。
    clash meta 我记得好像也有自己的 meta 内核?
    MacsedProtoss
        13
    MacsedProtoss  
       260 天前 via iPhone
    @shunia 你错了 人家说的就是 为啥 mihomo 这类要自己实现 ssclient vmess vless 之类的….
    liyunlong5
        14
    liyunlong5  
       256 天前 via Android
    @shunia 不是搞自己的协议,Singbox 是用 RUST 语言重写代码来实现别人协议的(理论上性能更好),不过 SB 更新的太频繁,配置文件时不时还会更改,这点不太好
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2987 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 13:19 PVG 21:19 LAX 05:19 JFK 08:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86