MetaCubeX / mihomo

A simple Python Pydantic model for Honkai: Star Rail parsed data from the Mihomo API.
https://wiki.metacubex.one
MIT License
16.51k stars 2.65k forks source link

[Bug] fallback 组使用 proxy-providers 时无法自动切换至有效节点 #998

Closed nonlog closed 9 months ago

nonlog commented 9 months ago

Verify steps

Mihomo version

mihomo-alpha-25d6ad2

What OS are you seeing the problem on?

Windows

Mihomo config

大致配置如下:


u_i: &u_i {url: http://cp.cloudflare.com/generate_204, interval: 30} #url&interval
p_p: &p_p {type: http, interval: 21600, health-check: {enable: true, <<: *u_i}} #proxy-providers
f_b: &f_b {type: fallback, <<: *u_i, lazy: false} #fallback
Sub: &Sub {<<: *f_b, use: [Sub]}

proxy-providers:
  Sub: {<<: *p_p, url: '###'}

proxy-groups:
  - {name: PROXY, type: select, proxies: [test1, 2, 3, 4...]}
  - {name: test1, <<: *Sub, filter: (###)}
  - test2, 3, 4...

Mihomo log

No response

Description

在两台电脑上 (win10 和 win11) 使用了 Clash for Windows, Clash Nyanpasu 和 Clash Verge rev 测试, v1.18.0 和前几个 alpha 版本都遇到了这个问题. 上述配置中"test1, 2, 3..." 组都是 fallback 类型, 设置了 interval 为 30, lazy 为 true 也无法自动切换至有效节点. 我也测试了配置中不使用锚点, 问题依旧.

我将机场节点放在 gist 中, proxy-providers 使用 gist 的链接, 通过修改 gist 控制节点是否可用, 多次测试组中第一个节点超时后不会自动切换至下一个节点, 手动进行延迟测试也不会切换.

大致同样的配置, 将节点写在 proxies 里, 使用自建的节点测试, 手动控制 fallback 组中第一个节点超时, 可以正常切换至有效节点.

nonlog commented 9 months ago

找到原因了, 不知道算不算 bug, 节点组的命名比较奇怪时会导致所有 fallback 失效, 比如 🇺🇸◇