- 栏目
- 配置
- 写于
- 读完约
- 3 分钟
- 涉及地区
- 美国
Clash 分流:只让 TikTok 走美国节点
- 注 1写法按 mihomo 内核,Clash Verge Rev、Clash Meta for Android 都能用。
- 注 2filter 只在开了 include-all-proxies 或 use 时起作用,单写 proxies 不会筛。
- 注 3TikTok 规则要排在 GEOIP,CN 和 MATCH 上面,前置规则在订阅更新后仍保留。
- 注 4节点名、分组名以你自己订阅里的为准,示例里的只是占位。
为什么要单独分流
机场订阅自带的配置,通常有一个「节点选择」之类的主分组,境外流量都从你在里面选中的节点走。这样有个麻烦:为了刷 TikTok(国际版抖音) 把主分组切到美国,其他境外网站也跟着绕到美国;改天想看别的地区的服务,把主分组切走,TikTok 的出口国家就变了,推荐内容也会跟着乱。
单独分流就是把这两件事拆开:TikTok 的请求永远进一个只有美国节点的组,其余流量还是听主分组的。概念上的解释可以看术语页的分流规则,下面直接讲写法。
先确认内核与节点名
下面的写法按 mihomo(原名 Clash Meta)内核。原版 Clash 已经停更,现在常用的是电脑上的 Clash Verge Rev 和安卓上的 Clash Meta for Android,它们用的都是这个内核。
导入订阅后,先到代理页看一眼美国节点叫什么。不同机场的命名差别很大,比如一翻云写「美国01」,还有一组带「电信-」前缀;闪跃写「United States01」;飞猫云写「美国-01」。还有更隐蔽的情况:飞猫云店家给出的拓扑图里,有两个名叫「阿根廷」的节点,出口被测成了美国。名字只能帮你筛选,真正的出口要靠后面的验证。
用 filter 筛出美国节点
mihomo 的代理组可以自动把所有节点收进来,再按名字筛选。写法如下:
proxy-groups:
- name: TikTok美国
type: select
include-all-proxies: true
filter: '(?i)美国|united ?states|\busa?(\b|\d)'
# 另一种写法:不用筛选,手动列出节点(名字换成你订阅里的原名)
# - name: TikTok美国
# type: select
# proxies:
# - 美国01
# - 美国02
几个字段的意思:
| 字段 | 作用 | 这里怎么填 |
|---|---|---|
| name | 组名,规则里要原样引用 | TikTok美国,可自己改 |
| type | 组的类型 | select,手动固定一个节点 |
| include-all-proxies | 把配置里所有节点收进来 | true,配合 filter 用 |
| filter | 按关键字或正则只留匹配的节点 | 匹配美国、United States、US 开头的名字 |
| exclude-filter | 排除匹配的节点 | 不需要时可以不写 |
| proxies | 手动列节点名 | 不用筛选时才写 |
filter 只对 include-all-proxies、include-all 或 use 收进来的节点生效,单写 proxies 时它不起作用。正则用单引号括起来,避免 YAML 把反斜杠当成转义。示例里的正则不区分大小写,能匹配「美国01」「United States01」「US-01」,不会误选「Russia」这类名字;你的订阅命名不同,就按实际情况改。如果机场的订阅用的是 proxy-providers,把 include-all-proxies 换成 use 加上提供者的名字。
组的类型为什么选 select:mihomo 还有 url-test(自动挑延迟低的)和 fallback(当前节点不通就换下一个)。这两种都会在你不知情时换节点,出口 IP 跟着变。刷视频时偶尔换一次问题不大,但如果你在意推荐内容稳定、或者刚注册的账号不想频繁换出口,用 select 手动固定更踏实,失效了自己换一个就是。
TikTok 域名规则
规则写在 rules 最上面,策略填上一步的组名:
rules:
- DOMAIN-SUFFIX,tiktok.com,TikTok美国
- DOMAIN-SUFFIX,tiktokv.com,TikTok美国
- DOMAIN-SUFFIX,tiktokv.us,TikTok美国
- DOMAIN-SUFFIX,tiktokcdn.com,TikTok美国
- DOMAIN-SUFFIX,tiktokcdn-us.com,TikTok美国
- DOMAIN-SUFFIX,tiktokd.net,TikTok美国
- DOMAIN-SUFFIX,tiktokd.org,TikTok美国
- DOMAIN-SUFFIX,tik-tokapi.com,TikTok美国
- DOMAIN-SUFFIX,ttwstatic.com,TikTok美国
- DOMAIN-SUFFIX,ttlivecdn.com,TikTok美国
- DOMAIN-SUFFIX,byteoversea.com,TikTok美国
- DOMAIN-SUFFIX,byteintlapi.com,TikTok美国
- DOMAIN-SUFFIX,bytedapm.com,TikTok美国
- DOMAIN-SUFFIX,ibytedtos.com,TikTok美国
- DOMAIN-SUFFIX,ibyteimg.com,TikTok美国
- DOMAIN-SUFFIX,ipstatp.com,TikTok美国
- DOMAIN-SUFFIX,sgpstatp.com,TikTok美国
- DOMAIN-SUFFIX,isnssdk.com,TikTok美国
- DOMAIN-SUFFIX,muscdn.com,TikTok美国
- DOMAIN-SUFFIX,musical.ly,TikTok美国
- DOMAIN,p16-tiktokcdn-com.akamaized.net,TikTok美国
# 下面接订阅原有的规则,GEOIP,CN 和 MATCH 要在这批之后
这份清单是对照 blackmatrix7 和 v2fly 两份社区清单整理的。blackmatrix7 还收了 snssdk.com、capcut.com、trae.ai 等,第一个国内的字节系 App 也可能用到,后两个是剪辑和编程工具,示例里都没放。v2fly 那份另有一批欧洲用的域名,走美国节点用不上,也没放。安卓上可以再加一行 PROCESS-NAME,com.zhiliaoapp.musically,按 TikTok 的包名整体分流,电脑上这一行没有作用。
嫌一条条写麻烦,也可以只写一行 GEOSITE,tiktok,TikTok美国。tiktok 这个分类就来自 v2fly 的清单,前提是客户端带的 geosite 数据文件里有它。
还有一种做法是用 rule-providers 直接引用 blackmatrix7 的规则文件,清单更新时客户端自动拉新版。好处是省得自己维护,坏处是那份清单连剪辑工具、编程工具的域名一起收了,它们也会被分到美国节点;规则文件托管在 GitHub 上,第一次拉取时客户端本身得能连上外网。只想管 TikTok 的话,手写的这一串更可控。
订阅更新不丢的写法
订阅生成的配置文件每次更新都会被覆盖,所以别直接改它。Clash Verge Rev 提供了两个不会被覆盖的地方。
第一个是右键菜单里的可视化编辑器。右键订阅卡片,选「编辑规则」,添加规则时类型选 DOMAIN-SUFFIX,策略选你的组,位置选前置规则。官方文档也建议用前置,并说明这里的改动不会随订阅更新失效。较新的版本还能用同样的方式编辑代理组;你的版本里找不到,就用第二种办法。
第二个是扩展脚本。右键订阅卡片进入脚本编辑器,把下面这段贴进去保存,它会在每次生成配置时自动插入分组和规则:
function main(config) {
const group = "TikTok美国";
const usNodes = (config.proxies || [])
.map((p) => p.name)
.filter((n) => /美国|united ?states|\busa?(\b|\d)/i.test(n));
if (usNodes.length === 0) return config;
config["proxy-groups"] = [
{ name: group, type: "select", proxies: usNodes },
...(config["proxy-groups"] || []),
];
const suffixes = [
"tiktok.com", "tiktokv.com", "tiktokv.us", "tiktokcdn.com",
"tiktokcdn-us.com", "tiktokd.net", "tiktokd.org", "tik-tokapi.com",
"ttwstatic.com", "ttlivecdn.com", "byteoversea.com", "byteintlapi.com",
"bytedapm.com", "ibytedtos.com", "ibyteimg.com", "ipstatp.com",
"sgpstatp.com", "isnssdk.com", "muscdn.com", "musical.ly",
];
const tk = suffixes.map((d) => `DOMAIN-SUFFIX,${d},${group}`);
config.rules = tk.concat(config.rules || []);
return config;
}
脚本里筛不到美国节点时会原样返回,不会把配置弄坏;订阅如果用 proxy-providers 提供节点,config.proxies 是空的,这时改用前面的 YAML 写法。
验证与常见卡点
保存后回到代理页,「TikTok美国」组里点一个节点,模式切到「规则」。打开 TikTok 刷几条视频,再去连接页看:tiktokv.com、tiktokcdn.com 这些域名的链路应该显示你的组名和所选节点。
- 模式是「全局」:规则不生效,所有流量走全局选中的节点。
- 组里是空的:filter 没匹配上,回去对照节点名改正则。
- 规则没命中:多半是被排在前面的规则先接走了,确认它们是前置规则。
- 所有美国节点同时刷不动:先看看新闻,2026-01-25 起美区 TikTok 有过一次大面积故障,到 02-01 才宣布服务完全恢复正常,不一定是机场的问题。
节点都通、App 还是空白的话,按挂着节点也用不了那篇排查。不同机场美国节点的数量和证据等级,见美国地区合集;iPhone 上的同类写法,见小火箭规则那篇。
步骤速记
- 确认客户端是 mihomo 内核:电脑用 Clash Verge Rev,安卓用 Clash Meta for Android。
- 导入机场订阅并更新一次,在代理页看清美国节点的命名方式。
- 新建一个 select 类型的代理组,用 include-all-proxies 加 filter 筛出美国节点,或手动列出节点名。
- 把 TikTok 的 DOMAIN-SUFFIX 规则加成前置规则,策略填刚建的代理组名。
- 在 Clash Verge Rev 里,可以右键订阅卡片用「编辑规则」等可视化编辑器,也可以用扩展脚本一次写进去。
- 回到代理页,在新组里点选一个美国节点,代理模式切到「规则」。
- 打开 TikTok 刷几条视频,到连接页确认 TikTok 的域名命中了新组。
- 节点失效时只在组里换一个美国节点,规则保持不动。
常被问到的
原版 Clash for Windows 还能用这套写法吗?
原版 Clash 内核和 Clash for Windows 都已停更,不认 include-all-proxies、filter 这些新字段。proxy-groups 手动列节点名、rules 写 DOMAIN-SUFFIX 的部分老内核也能识别,但建议直接换成 mihomo 内核的客户端。
订阅一更新,自己加的分组和规则就没了怎么办?
别直接改订阅生成的配置文件,它会被下一次更新覆盖。在 Clash Verge Rev 里用右键菜单的规则编辑器加成前置规则,或者写进扩展脚本,这两处的改动在订阅更新后都会保留。
用 GEOSITE,tiktok 一行代替整串规则可以吗?
mihomo 支持 GEOSITE 规则,tiktok 这个分类来自 v2fly 的社区域名清单,一行就能覆盖。前提是客户端带的 geosite 数据文件里有这个分类,版本太旧可能缺,加上后到连接页看一下有没有命中。
为什么不用 url-test 自动选最低延迟的节点?
url-test 会在延迟变化时自己换节点,出口 IP 跟着变。刷 TikTok 更在意出口稳定,用 select 手动固定一个,失效了再手动换,比自动跳来跳去更可控。