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

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

  •  5
     
  •   faceair ·
    faceair · 2023-05-02 23:59:15 +08:00 · 12801 次点击
    这是一个创建于 605 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我之前使用的机场的特点是使用 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  
       358 天前
    go install 装不了了

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