V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liyafe1997
V2EX  ›  宽带症候群

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

  •  
  •   liyafe1997 · 23 天前 · 2631 次点击

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

    39 条回复    2025-07-11 14:21:36 +08:00
    tangyujing99
        1
    tangyujing99  
       23 天前
    Rule:
    - DOMAIN-SUFFIX,google.com,proxy
    - FINAL,direct
    tangyujing99
        2
    tangyujing99  
       23 天前
    clash 「规则模式」就是要自己写/整合分流规则呀。
    tangyujing99
        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 //这一条放在最后兜底
    liyafe1997
        4
    liyafe1997  
    OP
       23 天前
    @tangyujing99
    你可能理解错我的意思了,你这是 V2EX 和 google 走代理,其它走直连。

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

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

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