如题,经常在墙外网和墙内网之间来回横跳,每次都要去改下 Clash 模式,在想能不能把这个流程做成自动的。
![]() |
1
tangyujing99 23 天前
|
![]() |
2
tangyujing99 23 天前
clash 「规则模式」就是要自己写/整合分流规则呀。
|
![]() |
3
tangyujing99 23 天前
@tangyujing99 #1 1 楼我写的也不严谨,因为我用 surge 。看了下原先 clash 的规则。
rules: - DOMAIN-SUFFIX,ex.noerr.eu.org,proxy - DOMAIN-SUFFIX,google.com,proxy - GEOIP,CN,direct - MATCH,proxy //这一条放在最后兜底 |
![]() |
4
liyafe1997 OP @tangyujing99
你可能理解错我的意思了,你这是 V2EX 和 google 走代理,其它走直连。 我想要的是,通过“检测我现在能否直连 Google”来识别我现在是在墙内网还是墙外网(如果我在墙内网,当然是无法直连 Google 的,如果我在墙外网,当然是可以直连 Google 的), 然后决定 clash 是切换到直连模式还是规则模式,如果在墙外网,就直连模式(任何域名都不需要走任何代理了,相当于 Clash 直接透传),如果在墙内网,那就把 Clash 切到规则模式,该走代理的走代理,该直连的直连。 |
![]() |
5
qs 23 天前
Stash 可以,可以通过指定 ua 来让一个网站存在多个分流规则,其他内核不了解
1. 通过 user-agent 规则,通过指定规则走直连判断能否直连目标网站 2. 根据第一步结果,用 clash api 修改策略组 |
![]() |
6
jesky 23 天前 ![]() 把 - Direct 放在自动选择里,就用自动选择就好了;前提条件是:直连比走代理节点的延迟低。
|
![]() |
7
tangyujing99 23 天前
@liyafe1997 明白了。例如就是深港两地跑这种情况。mihomo 可能没有,stash loon 这种应该有基于 ssid 的功能。要嘛就是将 direct 优先加到策略组内用 fallback 。
|
![]() |
8
Ipsum 23 天前
你把 direct 和 proxy 写到 failback 不就行了?
|
![]() |
9
bao3 23 天前
楼主,可以研究一下 clash 的 script 模式
|
![]() |
10
liyafe1997 OP @jesky 好主意,应该可行,我试试
|
11
lnbiuc 22 天前
https://www.aloxaf.com/2025/04/how_to_use_geosite/#%E6%B5%81%E9%87%8F%E5%88%86%E6%B5%81
rules: - GEOSITE,geolocation-!cn@cn,DIRECT # DIRECT 为直连分组,可以改为你自己的分组 - GEOSITE,geolocation-!cn,PROXY # PROXY 为代理分组,可以改为你自己的分组 - GEOSITE,geolocation-cn@!cn,PROXY - GEOSITE,geolocation-cn,DIRECT - GEOSITE,tld-cn,DIRECT |
12
565656 22 天前
geo 不就是地理规则
|
![]() |
13
liyafe1997 OP @565656 你没理解我的需求
|
![]() |
14
liyafe1997 OP @lnbiuc 你还是没理解我的需求
|
15
fskemp233 22 天前
放弃吧 直连是可以 但会被墙 QOS 卡到你吐
|
![]() |
16
hanqian 22 天前
direct 放自动选择里是对的,然后测试延迟的链接也要改成一个只有墙外才能访问到的链接
|
17
VirgilChen97 22 天前
我有这种情况是回家了有全局科学,手机的 clash 就不需要开启了。写了个快捷指令,如果脸上家里的 wifi ,就调用 clash 的 API 把模式切到全直连
|
18
yulon 22 天前
检测延迟那种很危险,直连墙外多了,墙肯定会给你标记,重点关照。
最理想的方式应该是检测自己的 IP 在不在国内。 |
![]() |
19
ETiV 22 天前 via iPhone
Surge 有一个 url-test 类型的 Proxy Group ,可以通过测试一个 URL 通不通、延迟高不高来确定走哪个 Proxy ,还有个 tolerance 参数配置容差值
|
20
scegg 22 天前
试试 fallback 模式,第一顺位 direct ,第二顺位代理。url 找个翻墙才能访问的。
|
21
TrackBack 22 天前
clash 也支持 url-test, 加一个代理加一个 direct 进去就行
|
![]() |
22
liyafe1997 OP @fskemp233 你也没理解我的需求...我都说因为连上了墙外的网络(非中国大陆的网络),所以希望直连,哪还来的墙 QOS
|
![]() |
23
liyafe1997 OP @yulon 对的,这也是个很好的思路,如果检测到当前的 IP 是非中国大陆的就直连,但是 Clash 规则能否做到这一点?
|
![]() |
24
liyafe1997 OP @yulon 感觉尝试直连 Google 应该不会被标记吧,这不就是典型的撞墙行为吗
|
25
lnbiuc 22 天前
@liyafe1997 #14 自己写脚本检测,通过 api 切换模式,你是 iphone 的话,快捷指令都能做到
|
26
MacsedProtoss 22 天前 via iPhone ![]() surge 可以支持你的需求
支持识别 ssid ,也支持识别运营商信息。这个运营商信息很有用,基本可以理解为就算你是漫游的也能区分出来你在哪里。 |
27
MacsedProtoss 22 天前 via iPhone ![]() @MacsedProtoss
具体而言 ersion 4.7.0 (Apr 21, 2021) Rules New rule type: SUBNET, which can match SSID/BSSID/router IP address with a wildcard pattern. New rule type: CELLULAR-CARRIER, which can match the MCC-MNC code. New rule type: CELLULAR-RADIO, which can match the radio access technology of the cellular network. CELLULAR-CARRIER 这里的 MCC-MNC 是看你实际接入的运营商,例如 cmhk 在 hk 和在 cn 漫游到中国移动是不同的 |
![]() |
28
liyafe1997 OP @MacsedProtoss 1. 我不一定是 WIFI ,不一定是手机(当然手机也有这个需求),有可能是电脑,有可能是以太网。2. 感觉通过识别当前 IP 是否为国内 IP 是最稳妥的做法。比“识别能否直连 Google”更靠谱。3. 我既不用 Mac 也不用 iPhone ,与 surge 无缘
|
![]() |
29
liyafe1997 OP @lnbiuc 这也不是不行,但是这样得,比如背后跑一个 python 持续检测然后去 call Clash 的 RESTful API 吗...
最好能靠 clash 自身就能完成 |
![]() |
30
totoro625 22 天前
@jesky #6
@Ipsum #8 这两位的方法比较好,使用 fallback ,当前节点超时时,则会按代理顺序选择第一个可用节点 注意:绝大部分代理软件会自动修改 204 网络监测链接,请在设置内关闭修改,或设置为境内不可用的 204 链接 如果有被墙的 IP 是最好的,被墙域名效果不好,例如 https://ex.noerr.eu.org/generate_204 会因为 DNS 缓存导致墙内可用 最好能买一个 IP 被墙的机器,在它上面搭建 204 服务 proxy-groups: - name: "能直连时自动切换直连模式" type: fallback proxies: - direct - 指定 proxy 组 url: 'http://www.google.com/generate_204' interval: 300 #lazy: true 参考: https://wiki.metacubex.one/config/proxy-groups/fallback |
31
anto17 22 天前 ![]() 我理解你的需求,把直连、proxy 都作为 proxy-groups 中的一个 item , 然后整个 proxy-groups 用 fallback 模式。测速链接用 google 的,这样如果 direct 通的话,不会 fallback 到 proxy ;否则自动 fallback 到 proxy
|
![]() |
32
fanersai 22 天前
@tangyujing99 #7 你不提深港两地跑,我还没意识到楼主的问题。
|
![]() |
33
SenLief 22 天前 via iPhone
来回横跳已什么方式?
|
34
yulon 22 天前
> @liyafe1997 感觉尝试直连 Google 应该不会被标记吧,这不就是典型的撞墙行为吗
是撞墙,但是你觉得有一个人,每隔几分钟就撞一次墙,一连撞几天很正常吗😂 假设他是普通人的话,就是有一个人一直在看白屏,然后很容易就抓到同时有一条私人外网服务器的大流量连接。 甚至都不用测延迟,很多人太多次查询 DNS 都会被标记。 |
![]() |
35
yaoyao1128 22 天前 via iPhone
一个思路 检测 1.1.1.1 urltest 容差设置小点 内地访问 1.1.1.1 的速度比香港高所以到了香港就会自动切换到最快的那个
|
36
leefor2020 22 天前
@yulon ,而且是每次直连失败后,都会立即有加密数据到另外一个固定的境外 IP ,更可疑了
|
![]() |
37
383394544 22 天前
用 clash 的脚本功能可以做到,检测到当前 ip 是 cn 就用代理模式,不是 cn 就切成直连模式。不需要直接检测 google.com 连通性
|
![]() |
38
383394544 22 天前
@liyafe1997 https://clash.wiki/premium/script.html
|
39
lnbiuc 22 天前
@liyafe1997 #29 如果你愿意的话,可以自己改下 mihomo 内核,加一个定时执行,轮询检测,然后调用方法切换模式,估计不到 20 行代码吧
|