Skip to content

[功能请求]遇到错误节点报错丢弃,继续下一个节点的测速,而不是直接退出 #67

Description

@jagger235711

功能请求: 增加 --skip-invalid 参数,遇到格式错误的节点跳过继续测速
问题描述
当配置文件中包含格式异常的节点时(例如缺少 obfs-password、无效的加密方式等),clash-speedtest 会直接崩溃退出:
load proxies failed: proxy 34: missing obfs password
对每天自动收集上千个节点的管道来说,上游数据偶尔混进去几个坏节点是难免的。目前没有途径跳过它们测试其余正常节点。
建议方案
增加 --skip-invalid 参数。启用后:

  • 加载配置时遇到格式错误的节点,跳过并继续加载下一个
  • 每个跳过的节点输出一条 warning:warning: skipped proxy 34 (missing obfs password)
  • 正常测试所有可用节点
  • 结束时汇总:998/1000 proxies tested, 2 skipped

当前行为

clash-speedtest -c config.yaml

error: load proxies failed: proxy 34: missing obfs password

加上 --skip-invalid

clash-speedtest -c config.yaml --skip-invalid

warning: skipped proxy 34 (missing obfs password)

正常测试其余 999 个节点...

实现思路
speedtester/speedtester.go 中 LoadProxies() 当前遇错直接返回 error。改成在 --skip-invalid 模式下收集每个节点的错误但不中断,最后只返回有效的节点列表。
// 当前逻辑
allProxies, err := speedTester.LoadProxies()
if err != nil {
log.Fatalln("load proxies failed: %s", err) // ← 直接退出
}

// 期望逻辑
allProxies, err := speedTester.LoadProxies()
if err != nil {
if !skipInvalid {
log.Fatalln("load proxies failed: %s", err)
}
log.Printf("warning: %s, skipping invalid proxies", err)
}
典型场景
自动化节点收集工作流(GitHub Actions、定时任务等),上游订阅源偶尔有格式不对的节点,不应因为几个坏节点就阻塞全部节点的测速。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions