Clash 能否设置规则,如果检测到能直连 Google 则切换直连模式(不走任何代理),否则规则模式 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liyafe1997
V2EX    宽带症候群

Clash 能否设置规则,如果检测到能直连 Google 则切换直连模式(不走任何代理),否则规则模式

  •  
  •   liyafe1997 92 天前 3052 次点击
    这是一个创建于 92 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,经常在墙外网和墙内网之间来回横跳,每次都要去改下 Clash 模式,在想能不能把这个流程做成自动的。

    39 条回复    2025-07-11 14:21:36 +08:00
    Krylo
        1
    Krylo  
       92 天前
    Rule:
    - DOMAIN-SUFFIX,google.com,proxy
    - FINAL,direct
    Krylo
        2
    Krylo  
       92 天前
    clash 「规则模式」就是要自己写/整合分流规则呀。
    Krylo
        3
    Krylo  
       92 天前
    @tangyujing99 #1 1 楼我写的也不严谨,因为我用 surge 。看了下原先 clash 的规则。

    rules:
    - DOMAIN-SUFFIX,v2ex.com,proxy
    - DOMAIN-SUFFIX,google.com,proxy
    - GEOIP,CN,direct
    - MATCH,proxy //这一条放在最后兜底
    liyafe1997
        4
    liyafe1997  
    OP
       92 天前
    @tangyujing99
    你可能理解错我的意思了,你这是 V2EX 和 google 走代理,其它走直连。

    我想要的是,通过“检测我现在能否直连 Google”来识别我现在是在墙内网还是墙外网(如果我在墙内网,当然是无法直连 Google 的,如果我在墙外网,当然是可以直连 Google 的),
    然后决定 clash 是切换到直连模式还是规则模式,如果在墙外网,就直连模式(任何域名都不需要走任何代理了,相当于 Clash 直接透传),如果在墙内网,那就把 Clash 切到规则模式,该走代理的走代理,该直连的直连。
    qs
        5
    qs  
       92 天前
    Stash 可以,可以通过指定 ua 来让一个网站存在多个分流规则,其他内核不了解

    1. 通过 user-agent 规则,通过指定规则走直连判断能否直连目标网站
    2. 根据第一步结果,用 clash api 修改策略组
    jesky
        6
    jesky  
       92 天前   4
    把 - Direct 放在自动选择里,就用自动选择就好了;前提条件是:直连比走代理节点的延迟低。
    Krylo
        7
    Krylo  
       
    @liyafe1997 明白了。例如就是深港两地跑这种情况。mihomo 可能没有,stash loon 这种应该有基于 ssid 的功能。要嘛就是将 direct 优先加到策略组内用 fallback 。
    Ipsum
        8
    Ipsum  
       92 天前
    你把 direct 和 proxy 写到 failback 不就行了?
    bao3
        9
    bao3  
       92 天前
    楼主,可以研究一下 clash 的 script 模式
    liyafe1997
        10
    liyafe1997  
    OP
       92 天前
    @jesky 好主意,应该可行,我试试
    lnbiuc
        11
    lnbiuc  
       92 天前
    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
    565656
        12
    565656  
       92 天前
    geo 不就是地理规则
    liyafe1997
        13
    liyafe1997  
    OP
       92 天前
    @565656 你没理解我的需求
    liyafe1997
        14
    liyafe1997  
    OP
       92 天前
    @lnbiuc 你还是没理解我的需求
    fskemp233
        15
    fskemp233  
       92 天前
    放弃吧 直连是可以 但会被墙 QOS 卡到你吐
    XnEnokq9vkvVq4
        16
    XnEnokq9vkvVq4  
       92 天前
    direct 放自动选择里是对的,然后测试延迟的链接也要改成一个只有墙外才能访问到的链接
    VirgilChen97
        17
    VirgilChen97  
       92 天前
    我有这种情况是回家了有全局科学,手机的 clash 就不需要开启了。写了个快捷指令,如果脸上家里的 wifi ,就调用 clash 的 API 把模式切到全直连
    yulon
        18
    yulon  
       92 天前
    检测延迟那种很危险,直连墙外多了,墙肯定会给你标记,重点关照。
    最理想的方式应该是检测自己的 IP 在不在国内。
    ETiV
        19
    ETiV  
       92 天前 via iPhone
    Surge 有一个 url-test 类型的 Proxy Group ,可以通过测试一个 URL 通不通、延迟高不高来确定走哪个 Proxy ,还有个 tolerance 参数配置容差值
    scegg
        20
    scegg  
       92 天前
    试试 fallback 模式,第一顺位 direct ,第二顺位代理。url 找个翻墙才能访问的。
    TrackBack
        21
    TrackBack  
       92 天前
    clash 也支持 url-test, 加一个代理加一个 direct 进去就行
    liyafe1997
        22
    liyafe1997  
    OP
       92 天前
    @fskemp233 你也没理解我的需求...我都说因为连上了墙外的网络(非中国大陆的网络),所以希望直连,哪还来的墙 QOS
    liyafe1997
        23
    liyafe1997  
    OP
       92 天前
    @yulon 对的,这也是个很好的思路,如果检测到当前的 IP 是非中国大陆的就直连,但是 Clash 规则能否做到这一点?
    liyafe1997
        24
    liyafe1997  
    OP
       92 天前
    @yulon 感觉尝试直连 Google 应该不会被标记吧,这不就是典型的撞墙行为吗
    lnbiuc
        25
    lnbiuc  
       92 天前
    @liyafe1997 #14 自己写脚本检测,通过 api 切换模式,你是 iphone 的话,快捷指令都能做到
    MacsedProtoss
        26
    MacsedProtoss  
       92 天前 via iPhone   1
    surge 可以支持你的需求
    支持识别 ssid ,也支持识别运营商信息。这个运营商信息很有用,基本可以理解为就算你是漫游的也能区分出来你在哪里。
    MacsedProtoss
        27
    MacsedProtoss  
       92 天前 via iPhone   1
    @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 漫游到中国移动是不同的
    liyafe1997
        28
    liyafe1997  
    OP
       92 天前
    @MacsedProtoss 1. 我不一定是 WIFI ,不一定是手机(当然手机也有这个需求),有可能是电脑,有可能是以太网。2. 感觉通过识别当前 IP 是否为国内 IP 是最稳妥的做法。比“识别能否直连 Google”更靠谱。3. 我既不用 Mac 也不用 iPhone ,与 surge 无缘
    liyafe1997
        29
    liyafe1997  
    OP
       92 天前
    @lnbiuc 这也不是不行,但是这样得,比如背后跑一个 python 持续检测然后去 call Clash 的 RESTful API 吗...
    最好能靠 clash 自身就能完成
    totoro625
        30
    totoro625  
       92 天前
    @jesky #6
    @Ipsum #8
    这两位的方法比较好,使用 fallback ,当前节点超时时,则会按代理顺序选择第一个可用节点

    注意:绝大部分代理软件会自动修改 204 网络监测链接,请在设置内关闭修改,或设置为境内不可用的 204 链接
    如果有被墙的 IP 是最好的,被墙域名效果不好,例如 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
    anto17
        31
    anto17  
       92 天前   1
    我理解你的需求,把直连、proxy 都作为 proxy-groups 中的一个 item , 然后整个 proxy-groups 用 fallback 模式。测速链接用 google 的,这样如果 direct 通的话,不会 fallback 到 proxy ;否则自动 fallback 到 proxy
    momo65535
        32
    momo65535  
       92 天前
    @tangyujing99 #7 你不提深港两地跑,我还没意识到楼主的问题。
    SenLief
        33
    SenLief  
       91 天前 via iPhone
    来回横跳已什么方式?
    yulon
        34
    yulon  
       91 天前
    > @liyafe1997 感觉尝试直连 Google 应该不会被标记吧,这不就是典型的撞墙行为吗

    是撞墙,但是你觉得有一个人,每隔几分钟就撞一次墙,一连撞几天很正常吗
    假设他是普通人的话,就是有一个人一直在看白屏,然后很容易就抓到同时有一条私人外网服务器的大流量连接。
    甚至都不用测延迟,很多人太多次查询 DNS 都会被标记。
    yaoyaomoe
        35
    yaoyaomoe  
       91 天前 via iPhone
    一个思路 检测 1.1.1.1 urltest 容差设置小点 内地访问 1.1.1.1 的速度比香港高所以到了香港就会自动切换到最快的那个
    leefor2020
        36
    leefor2020  
       91 天前
    @yulon ,而且是每次直连失败后,都会立即有加密数据到另外一个固定的境外 IP ,更可疑了
    383394544
        37
    383394544  
       91 天前
    用 clash 的脚本功能可以做到,检测到当前 ip 是 cn 就用代理模式,不是 cn 就切成直连模式。不需要直接检测 google.com 连通性
    383394544
        38
    383394544  
       91 天前
    @liyafe1997 https://clash.wiki/premium/script.html
    lnbiuc
        39
    lnbiuc  
       91 天前
    @liyafe1997 #29 如果你愿意的话,可以自己改下 mihomo 内核,加一个定时执行,轮询检测,然后调用方法切换模式,估计不到 20 行代码吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5957 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 02:47 PVG 10:47 LAX 19:47 JFK 22:47
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86