V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
faceair
V2EX  ›  分享创造

基于 Clash 核心的测速工具,帮我发现了我正在使用的机场是个垃圾

  •  5
     
  •   faceair ·
    faceair · 2023-05-02 23:59:15 +08:00 · 12886 次点击
    这是一个创建于 612 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我之前使用的机场的特点是使用 Clash 自带的延迟测试来看延迟都很低,但实际带宽很低很低。平时看 Clash 自带的测速很漂亮就以为很好,最近下载一些 huggingface 上的模型自己玩就发现其实很卡。机场的的节点一般很多,如果配置的是 Loadbalance 的模式的话手动跑 speedtest 还是比较困难的,还是需要一个简单可靠的测速工具帮助定位问题的。

    我在 Github 搜罗了一圈,发现似乎没有很好的轮子:
    1. StairSpeedtest 本地运行直接 crash 了
    2. SSRSpeedN 安装运行起来比较复杂
    3. nodesCatch 闭源工具不敢用
    4. starudream/clash-speedtest 勉强能用,但不支持 Proxy Provider
    5. FullTclash 有一些机场在用,个人用起来比较麻烦

    我写的这个工具的特点:
    1. 无需额外的配置,直接将 Clash 配置文件地址作为参数传入即可
    2. 支持 Proxy 和 Proxy Provider 中定义的全部类型代理节点,兼容性跟 Clash 一致
    3. 不依赖额外的 Clash 实例,单一进程即可完成测试
    4. 代码简单而且开源,不发布构建好的二进制文件,保证你的节点安全

    Github 地址 https://github.com/faceair/clash-speedtest

    从功能上来说当前还只满足了比较简单的个人需求,但如果大家对这个实现有兴趣,可以开 issue 或者 pr 一起完善。
    第 1 条附言  ·  2023-05-03 23:38:31 +08:00
    之前在超时后的计算结果不正确,可能会导致测速的带宽偏大,更新到最新版可以解决
    47 条回复    2024-11-30 13:49:36 +08:00
    Drumming
        1
    Drumming  
       2023-05-03 00:40:56 +08:00
    很有用!
    xiaomoxian
        2
    xiaomoxian  
       2023-05-03 02:16:04 +08:00 via Android
    支持原创大佬
    Aloento
        3
    Aloento  
       2023-05-03 02:40:00 +08:00
    支持
    christin
        4
    christin  
       2023-05-03 03:15:25 +08:00
    我用的机场 150 个节点,每个都下载 100m 估计测两次速流量就没了。
    1423
        5
    1423  
       2023-05-03 03:18:51 +08:00 via iPhone   ❤️ 1
    推荐 ttfb.sh
    1423
        6
    1423  
       2023-05-03 03:19:16 +08:00 via iPhone
    脚本不是域名
    goodryb
        7
    goodryb  
       2023-05-03 08:10:55 +08:00
    能否打包个二进制给 windows 用
    cssk
        8
    cssk  
       2023-05-03 08:22:21 +08:00 via iPhone
    延时和带宽有啥关系
    faceair
        9
    faceair  
    OP
       2023-05-03 08:50:17 +08:00
    @christin #4 你可以使用 -f 参数来指定你想测速的节点,也可以使用 -s 参数指定单次测试要下载的文件大小。

    @1423 #5 介绍中我已经对比了 TTFB 类型的测速方法的几种缺陷:
    1. 如果 Loadbalance 的策略不好测出全部节点的延迟
    2. TTFB 只能代表延迟不能测出带宽,是有可能延迟低但带宽也低的
    所以实际上 TTFB 的测试在这种情况下并不好用。

    @goodryb #7 这种比较敏感的应用如果手动 Release 二进制还是有些风险的,后面我看下是否可以通过 Github Workflow 来自动打包,增强中间的透明度
    faceair
        10
    faceair  
    OP
       2023-05-03 08:51:51 +08:00
    @cssk #8 这是两个类型的指标,应该独立看待,我在 README 中已经有些介绍了。
    SenLief
        11
    SenLief  
       2023-05-03 09:20:57 +08:00
    我一般就是从 dropbox 拉 1g 的文件,看看能不能跑满带宽,能跑满不限速的都可以。
    1423
        12
    1423  
       2023-05-03 10:08:56 +08:00
    一般不存在稳定低延迟又带宽低的节点
    gujigujij
        13
    gujigujij  
       2023-05-03 10:13:18 +08:00
    有无机场推荐
    faceair
        14
    faceair  
    OP
       2023-05-03 10:25:11 +08:00
    @gujigujij #13 这个帖子里就不歪楼了,可以搜一下站内之前的讨论 https://www.google.com/search?q=site:v2ex.com/t%20%E6%9C%BA%E5%9C%BA%20%E6%8E%A8%E8%8D%90
    faceair
        15
    faceair  
    OP
       2023-05-03 11:04:14 +08:00
    @1423 #12 是存在的,而且很普遍。

    类比一下你去阿里云开一个小鸡,带宽只给 1m ,那么延迟可以很低同时带宽也很低。在机场这里的情况一般是香港的节点延迟低,但是可能受限于机器的带宽或者 IEPL 、IPLC 专线的带宽,实际大文件的下载或者看视频会卡。这种情况通过 Clash 的 url-test 或者你之前提到的 ttfb 是看不出来的。
    faceair
        16
    faceair  
    OP
       2023-05-03 19:09:45 +08:00
    @goodryb #7 配置了一个 goreleaser 的 github workflow ,现在有自动的打包了 https://github.com/faceair/clash-speedtest/releases/tag/v1.0.0
    Kinnice
        17
    Kinnice  
       2023-05-03 23:09:44 +08:00
    @1423 #12 游戏节点 /真 IPLC 节点
    bitkuang8
        18
    bitkuang8  
       2023-05-04 10:18:45 +08:00
    支持一波开源大佬~
    2000wcw
        19
    2000wcw  
       2023-05-04 12:08:55 +08:00   ❤️ 1
    v2ray 和 CLASH 的测速,很多都是只看 ping ,其实这个最不靠谱,稳定的机场和 VPS 就算延迟高一点,只要带宽稳定,就能流畅播放油管,所以我现在都是用下载来测速。
    vueli
        20
    vueli  
       2023-05-04 12:57:06 +08:00
    请教一个问题,我也用过别的测试软件,结果显示速度快,但是实际使用发现节点根本用不了这种情况是为什么?
    faceair
        21
    faceair  
    OP
       2023-05-04 13:11:45 +08:00
    @vueli #20 用我这个工具测出来情况是怎么样的?延迟和带宽匹配吗?
    macy
        22
    macy  
       2023-05-04 21:05:35 +08:00
    已 start ,很棒的工具,有时候机场 ping 很低,但是视频会卡,又没有好办法,建议增加排名功能,测试结束后,过滤出速度最快的几个节点,能帮助用户直观选择
    faceair
        23
    faceair  
    OP
       2023-05-04 22:16:06 +08:00   ❤️ 1
    @macy #22 已更新 v1.2.0 ,支持传入 http 订阅链接,支持默认按带宽降序排列,也给结果标记了一些颜色
    824020994
        24
    824020994  
       2023-05-05 09:21:09 +08:00
    为什么我下载后,打开命令行文件闪退
    faceair
        25
    faceair  
    OP
       2023-05-05 10:26:26 +08:00
    @824020994 #24 如果是 windows 的话可以尝试在终端运行这个 exe 文件,如果确实有啥报错的话可以开 issue 补充上下文信息再看
    yufeng0681
        26
    yufeng0681  
       2023-05-06 13:59:21 +08:00
    这个应用,虽然有盗用风险, 但是还是值得做做增值服务的,就是 客观评价哪家机场是真的服务品质好;
    这样你就能 基于这个排名,做推荐入口。

    减少信息差,对用户就是好事。
    Jzdoxc
        27
    Jzdoxc  
       2023-05-06 14:59:34 +08:00
    可以添加一个订阅转换的,有的机场的订阅是一大串字符,clash for windows 可以识别,使用你这个无法识别
    kaiger
        28
    kaiger  
       2023-05-06 17:37:54 +08:00
    好东西,已 star ,就是能不能控制下载文件大小,节点多的话,几轮测速流量就没了。
    faceair
        29
    faceair  
    OP
       2023-05-06 19:20:33 +08:00
    @kaiger #28 有参数,你仔细看下
    Royal22
        30
    Royal22  
       2023-05-06 23:39:45 +08:00
    我曾经考虑过采用类似的方法进行测速并选择最优节点,但是后来我发现这种方法存在一些问题。例如,在高峰期和平时,速度可能会有所不同,就连 NF 的速度都大不相同,并且稳定性也需要考虑。因此,我正在思考如何解决这个问题,使之更加线性化和可靠。
    faceair
        31
    faceair  
    OP
       2023-05-06 23:59:44 +08:00 via iPhone
    @Royal22 可能不用选择最优节点。如果这个机场不能保证在高峰时间的可用带宽充足,换一家就好了。
    vituralfuture
        32
    vituralfuture  
       2023-05-07 00:14:42 +08:00
    正好最近在学 go ,可以学一下
    不过我有一个疑问,为什么写入 csv 文件要插入 BOM?
    我了解的是,BOM 可能会干扰一些软件处理文本流
    另外 BOM 对 UTF-8 是可选的
    faceair
        33
    faceair  
    OP
       2023-05-07 01:17:04 +08:00
    @vituralfuture #32 这部分代码的主体是一位贡献者提供的 https://github.com/faceair/clash-speedtest/pull/1 根据他的描述可能是 excel 打开 utf8 的 csv 的时候需要 BOM 。如果你想移除这个 BOM 的话可以介绍一下具体的使用场景,我来权衡一下,可能再额外开个选项之类的,或者提供 json 等其他的格式来使用。
    faceair
        34
    faceair  
    OP
       2023-05-07 01:24:14 +08:00
    @Jzdoxc #27 你说的这个应该是 ss 或者 ssr 的订阅,要解析转成 clash 的格式在代码实现上还是比较费劲的。你可以自己找一些工具来转换。
    另外是其实大部分的机场现在应该都是直接提供 clash 的订阅的链接的,如果明面上没有的话也可以自己尝试加一下 &flag=clash 或者 &clash=1 看看。https://github.com/Dreamacro/clash/issues/2632#issuecomment-1475482445
    likeme
        35
    likeme  
       2023-05-08 08:56:21 +08:00
    mac os 有能用的嘛
    faceair
        36
    faceair  
    OP
       2023-05-08 09:40:27 +08:00
    @likeme #35 现在是有什么问题?应该是全平台通用的
    likeme
        37
    likeme  
       2023-05-08 09:56:48 +08:00
    @faceair 抱歉没看到需要用到 go 环境~
    ciki
        38
    ciki  
       2023-05-08 14:12:46 +08:00
    测试了下,我的机场识别不到节点
    faceair
        39
    faceair  
    OP
       2023-05-08 14:56:56 +08:00
    @ciki #38 方便的话可以尝试隐去节点信息之后提个 issue ,贴一下完整的文件,我看下结构
    jesky
        40
    jesky  
       2023-05-09 23:28:14 +08:00 via iPhone
    这是个好东西,收藏了,明天试试
    marvincible
        41
    marvincible  
       2024-01-04 09:21:03 +08:00
    go install 装不了了

    The go.mod file for the module providing named packages contains one or
    more replace directives.
    marvincible
        42
    marvincible  
       2024-01-04 10:08:10 +08:00
    @faceair #34 6 啊 之前一直在用转换工具,没想到加一个 clash=1 解决了
    cnsdytedison
        43
    cnsdytedison  
       295 天前
    @faceair 感谢大佬,搜到了您 github 上的仓库但是仓库上没有写 windows 包的位置。
    loveqianool
        44
    loveqianool  
       103 天前 via Android
    用此工具测完导出的 yaml 不能直接用于 节点发现。
    faceair
        45
    faceair  
    OP
       103 天前
    @loveqianool 这个是帮你评测机场整体情况的,不是帮你评测单个节点的 一是日常测速流量撑不起、二是大部分时候同一机场的不同节点差异不会很大
    loveqianool
        46
    loveqianool  
       101 天前 via Android
    @faceair 我是找了一个白嫖订阅 https://VLESS.fxxk.dedyn.io/auto ,他在我这边很多节点连接不上,但是只要能通他比我买的机场还快。
    faceair
        47
    faceair  
    OP
       34 天前   ❤️ 1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:14 · PVG 04:14 · LAX 12:14 · JFK 15:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.