V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
liyafe1997

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

  •  
  •   liyafe1997 · Jul 10, 2025 · 4378 views
    This topic created in 297 days ago, the information mentioned may be changed or developed.

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

    39 replies    2025-07-11 14:21:36 +08:00
    Krylo
        1
    Krylo  
       Jul 10, 2025
    Rule:
    - DOMAIN-SUFFIX,google.com,proxy
    - FINAL,direct
    Krylo
        2
    Krylo  
       Jul 10, 2025
    clash 「规则模式」就是要自己写/整合分流规则呀。
    Krylo
        3
    Krylo  
       Jul 10, 2025
    @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
       Jul 10, 2025
    @tangyujing99
    你可能理解错我的意思了,你这是 V2EX 和 google 走代理,其它走直连。

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

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

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

    是撞墙,但是你觉得有一个人,每隔几分钟就撞一次墙,一连撞几天很正常吗😂
    假设他是普通人的话,就是有一个人一直在看白屏,然后很容易就抓到同时有一条私人外网服务器的大流量连接。
    甚至都不用测延迟,很多人太多次查询 DNS 都会被标记。
    yaoyaomoe
        35
    yaoyaomoe  
       Jul 11, 2025 via iPhone
    一个思路 检测 1.1.1.1 urltest 容差设置小点 内地访问 1.1.1.1 的速度比香港高所以到了香港就会自动切换到最快的那个
    leefor2020
        36
    leefor2020  
       Jul 11, 2025
    @yulon ,而且是每次直连失败后,都会立即有加密数据到另外一个固定的境外 IP ,更可疑了
    383394544
        37
    383394544  
       Jul 11, 2025
    用 clash 的脚本功能可以做到,检测到当前 ip 是 cn 就用代理模式,不是 cn 就切成直连模式。不需要直接检测 google.com 连通性
    383394544
        38
    383394544  
       Jul 11, 2025
    @liyafe1997 https://clash.wiki/premium/script.html
    lnbiuc
        39
    lnbiuc  
       Jul 11, 2025
    @liyafe1997 #29 如果你愿意的话,可以自己改下 mihomo 内核,加一个定时执行,轮询检测,然后调用方法切换模式,估计不到 20 行代码吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2538 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 120ms · UTC 12:42 · PVG 20:42 · LAX 05:42 · JFK 08:42
    ♥ Do have faith in what you're doing.