MetaCubeX / mihomo

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

[Feature] 为路由规则添加切换节点的最小时间限制,避免一小时账户从香港飞到美国的问题 #1590

Closed lnc1995 closed 1 month ago

lnc1995 commented 1 month ago

Verify steps

Description

比如路由规则中设置某网站使用ABC这组策略,策略中有香港和美国节点。我上一次访问这个网站使用的是香港节点,添加一个选项,比如设置为2小时,2小时内再次访问,即使策略组中已经切换到美国节点,但命中该时间规则,本次访问仍然使用上一次的节点(更优的最好是用户可以手动通过关键字对策略组中的节点再次分组,之前使用的是香港组那就在香港组中切换,而不会用到美国节点)

Possible Solution

No response

Skyxim commented 1 month ago

搞清楚路由和策略组

leic4u commented 1 month ago

你这个需求太个性化了。而且你的方案会导致策略组的展示和实际行为不一致的情况,完全不可取。

不如请求对 load-balance 进行下修改,增加 sticky-sessions 缓存时间的设置,现在默认是 10 分钟,不能改。如果支持修改缓存时间了,你可以改为 2 小时,这样你可以按下面的方式新建策略组。 https://wiki.metacubex.one/config/proxy-groups/load-balance/

你自己建一个 url-test 的香港策略组,筛选香港节点。 再建一个 url-test 的美国策略组,筛选美国节点。 最后新建一个 load-balance 策略组,包含以上香港和美国两个策略组,设置 sticky-sessions 缓存时间为 2 小时,2 小时内一直走香港,但香港策略组内部可以切换不同的香港节点,不会切到美国去。到了 2 小时随机切换一个策略组,有 50% 概率切到美国去。

这样就可以满足你的需求。

lnc1995 commented 1 month ago

你这个需求太个性化了。而且你的方案会导致策略组的展示和实际行为不一致的情况,完全不可取。

不如请求对 load-balance 进行下修改,增加 sticky-sessions 缓存时间的设置,现在默认是 10 分钟,不能改。如果支持修改缓存时间了,你可以改为 2 小时,这样你可以按下面的方式新建策略组。 https://wiki.metacubex.one/config/proxy-groups/load-balance/

你自己建一个 url-test 的香港策略组,筛选香港节点。 再建一个 url-test 的美国策略组,筛选美国节点。 最后新建一个 load-balance 策略组,包含以上香港和美国两个策略组,设置 sticky-sessions 缓存时间为 2 小时,2 小时内一直走香港,但香港策略组内部可以切换不同的香港节点,不会切到美国去。到了 2 小时随机切换一个策略组,有 50% 概率切到美国去。

这样就可以满足你的需求。

其实不是个性化,是因为有些网站会检测这种IP变化,现实时间里没法一小时从香港到美国,出现这种情况判断为用了代理封号没毛病。你说的这个配置我查文档的时候看到了,确实还算符合需求,但是就是没有时间设置

lnc1995 commented 1 month ago

搞清楚路由和策略组

没搞岔啊。我重新描述下。比如路由规则GEOIP,TELEGRAM,TG。在使用TG时会使用TG策略组中的节点,这个策略组中包含了香港和美国的节点。我在08:00的时候使用TG用了香港节点。希望在10:00的使用TG时候,即使策略组已经切换到美国节点,但因为最小切换时间限制设置成12小时,仍然去采用香港节点。 这个配置放在路由规则中会更合适,比如GEOIP TELEGRAM,GEOSITE OPENAI,加上这样的配置,就会避免短时间内访问IP跨越半个地球的情况。有过账号因此被封的经历

Skyxim commented 1 month ago

Author

首先你如果不想被切换节点应该自行对节点分类,而让一个规则指向这个固定节点;其次,你应该使用load-balance,其中有算法将根据域名后缀锁定使用节点;然后如果存在节点变化,且你没有根据规则规律,软件也没做到对策略组选择节点保证上次相同

Fddh2012 commented 1 month ago

为什么不想的是使用Geo分组给这个网站呢?既然这个站点不让你IP随便跑?你只给他一个Geo正确的url-test组,Geo都不会飘,除非这整个组都炸了,不然肯定不会失联,再说,如果整个组失联,你再手动切换到其他Geo不就好了。

lnc1995 commented 1 month ago

为什么不想的是使用Geo分组给这个网站呢?既然这个站点不让你IP随便跑?你只给他一个Geo正确的url-test组,Geo都不会飘,除非这整个组都炸了,不然肯定不会失联,再说,如果整个组失联,你再手动切换到其他Geo不就好了。

就是想省略手动这个步骤。某个地区的节点全掉了一是要手动进后台切。二是你自己不会记得上次使用距离现在过了多久,时间过短被判断账号异常就容易被封号了