外观
FlClash 脚本分流教程
约 2181 字大约 7 分钟
FlClashFIClash脚本分流代理组
2026-10-12
想让 AI、YouTube、GitHub 分别用不同节点?FlClash 加上一份分流脚本,就能给它们单独选线路。先看这个例子:
单独选节点的组,各走各的;选择“[本站]默认”的组,跟着默认组走。图中 A、B、C 是示例,不是速度排名。
顺便说一下,软件名是 FlClash,中间是小写 l,不是大写 I;搜成 FIClash 或 ficlash 的朋友,看的也是这款软件。
先准备能正常上网的订阅,没配置好可看FlClash 入门教程。开始前备份订阅和原来的覆写设置;已有脚本不会自动合并。本文按电脑端界面演示,不同版本的按钮可能略有区别。
一、保存分流脚本
- 点击左侧工具(扳手图标)→ 进阶配置 → 脚本 → 添加。
- 打开代码编辑区,用下方完整代码替换默认示例,不要接在旧代码后面。
- 点击右上角保存图标,名称填“我的分流”,点确定。
展开完整分流脚本,复制里面的 JavaScript 代码
// 找梯子网分流脚本 v1.0:只增加服务分组与域名规则,不修改 DNS、TUN 或端口。
function main(config) {
// 可编辑区:在这里增删分组和域名,只写域名,不写网址或通配符。
const prefix = "[本站]";
const services = {
AI: ["chatgpt.com", "openai.com", "oaistatic.com", "oaiusercontent.com", "claude.ai", "anthropic.com"],
YouTube: ["youtube.com", "youtu.be", "googlevideo.com", "ytimg.com"],
GitHub: ["github.com", "githubusercontent.com", "githubassets.com"],
};
if (!config || typeof config !== "object" || Array.isArray(config)) {
throw new Error("没有读取到有效订阅配置");
}
if (!Array.isArray(config.rules) || config.rules.length === 0) {
throw new Error("订阅没有基础规则,请先使用能够正常上网的完整配置");
}
if (config.proxies !== undefined && !Array.isArray(config.proxies)) {
throw new Error("订阅的 proxies 格式不正确");
}
if (config["proxy-groups"] !== undefined && !Array.isArray(config["proxy-groups"])) {
throw new Error("订阅的 proxy-groups 格式不正确");
}
const providers = config["proxy-providers"] || {};
if (typeof providers !== "object" || Array.isArray(providers)) {
throw new Error("订阅的 proxy-providers 格式不正确");
}
const nodes = config.proxies || [];
const oldGroups = config["proxy-groups"] || [];
const reserved = new Set(["DIRECT", "REJECT", "REJECT-DROP", "PASS", "COMPATIBLE", "GLOBAL"]);
const nodeNames = [...new Set(nodes
.filter(node => node && typeof node.name === "string" && node.name.trim()
&& !reserved.has(node.name) && !["direct", "reject", "pass"].includes(node.type))
.map(node => node.name))];
const providerNames = Object.keys(providers);
if (nodeNames.length === 0 && providerNames.length === 0) {
throw new Error("订阅没有可用节点或节点集合");
}
const defaultName = prefix + "默认";
const serviceNames = Object.keys(services);
const names = [defaultName, ...serviceNames.map(name => prefix + name)];
const existing = new Set([...nodes, ...oldGroups].map(item => item && item.name));
for (const name of names) {
if (!name.trim() || /[,\r\n]/.test(name) || reserved.has(name)) {
throw new Error("分组名称不能为空或包含逗号、换行");
}
if (existing.has(name)) {
throw new Error("配置已有同名分组或节点:" + name + "。请更换 prefix,或从原订阅重新加载");
}
}
if (new Set(names).size !== names.length) {
throw new Error("服务分组不能与默认分组重名");
}
const routes = [];
const domains = new Set();
for (const service of serviceNames) {
if (!Array.isArray(services[service]) || services[service].length === 0) {
throw new Error("分组必须包含域名:" + service);
}
for (const value of services[service]) {
const domain = typeof value === "string" ? value.trim().toLowerCase() : "";
if (!/^(?:[a-z0-9-]+\.)+[a-z0-9-]+$/.test(domain)) {
throw new Error("请只填写域名,不填写网址、路径或通配符:" + value);
}
if (domains.has(domain)) throw new Error("域名重复,请只保留一个分组:" + domain);
domains.add(domain);
routes.push({ domain, target: prefix + service });
}
}
// 更具体的子域名先匹配,方便给某个服务单独指定策略。
routes.sort((a, b) => b.domain.split(".").length - a.domain.split(".").length);
const makeGroup = (name, choices) => {
const group = { name, type: "select", proxies: choices, "empty-fallback": "REJECT" };
if (providerNames.length) group.use = providerNames.slice();
return group;
};
const groups = [makeGroup(defaultName, nodeNames.slice()),
...serviceNames.map(name => makeGroup(prefix + name, [defaultName, ...nodeNames]))];
// 只替换这两份数组;机场节点、基础规则及其他设置均保留。
return { ...config,
"proxy-groups": [...groups, ...oldGroups],
rules: [...routes.map(route => "DOMAIN-SUFFIX," + route.domain + "," + route.target), ...config.rules]
};
}
第一次先原样复制,不用填订阅地址或节点密码。代码前面的 services 是网站清单,想加网站,后面再改。
脚本只增加分组和域名规则,不修改 DNS、TUN、端口或节点。列出的域名会优先走新规则,其他请求保留原规则;它不提供节点,也不保证提速或解除网站限制。
二、把脚本绑定到订阅
保存了代码,还要让当前订阅用上它:
- 打开左侧配置,找到正在使用的订阅卡片。
- 点击卡片右侧 ⋮ → 更多 → 覆写。
- 覆写模式选“脚本”,再选中 “我的分流”。
- 点击左上角返回,应用配置,再去代理页查看分组。

“前往配置脚本”是编辑入口,“预览”是查看结果,都不是启用按钮。基础脚本会出现 [本站]默认、[本站]AI、[本站]YouTube、[本站]GitHub 四个组。
如果没出现,先确认绑的是当前订阅、没有配置报错,再重新加载。换了备用订阅,也要核对它自己的覆写设置。
三、给不同网站选节点
- 在仪表盘把出站模式设为 规则。
- 进入代理页,点击顶部 [本站]默认 标签,选一个可用节点。
- 再打开 AI、YouTube、GitHub 等组,分别选择具体节点,或选择 [本站]默认。

顶部标签选“哪个组”,下面卡片选“哪条线路”。想单独走一条线路,就直接选节点;想共用默认线路,就选“[本站]默认”。
别选“剩余流量”“套餐到期”等提示卡片,它们不是正常节点。截图中的 Google 组是后面额外添加的;流量、到期日和毫秒数只是截图时的信息,不是当前套餐或线路质量结论。
四、看看请求有没有走对
以 GitHub 为例:
- 在浏览器新打开 GitHub 页面。
- 回到 FlClash 的 连接 页,点放大镜,搜
github。 - 看对应记录是否带着 [本站]GitHub 标签,以及最终节点是不是刚才选的那条。

像图中这样,GitHub 请求带 GitHub 组和默认组标签,YouTube 请求带 YouTube 组标签,就可以对照各自的节点选择。
换节点后要看新连接,旧连接可能还沿用旧线路。右侧圆圈斜杠是关闭连接,不是选节点,正在下载或通话时别随手点。
网站可能用到多个域名,这份清单不保证覆盖全部请求。确认后更新一次订阅,再检查绑定和新连接;网页能打开、DNS 检测显示国外,都不能代替连接记录的验证。
五、再加一个 Google 分组
打开“我的分流”,找到开头的 services。在 GitHub 那一项后面、结束括号之前,加上:
Google: ["google.com"],
保留上一项末尾的逗号,点右上角保存,再重新加载配置。代理页会多出 [本站]Google,进去选节点就行。
这里只填域名,不带 https://、路径或 *;同一个域名不要放进两个组。这个例子会处理 google.com 及其子域名,不代表全部 Google 服务都被覆盖。
六、出问题怎么退回去
- 没有分组:检查脚本是否保存、是否绑定当前订阅,留意配置报错。
- 有连接但走了其他组:确认是规则模式,再看实际域名是否在清单里。
- 走对组却打不开:再查节点和原有网络配置,分流成功不等于线路一定能用。
- 报语法错误或同名:检查代码是否完整、是否重复套用了脚本;同名时先核对原组名,再考虑改
prefix。
想恢复原来的用法,回到这份订阅的覆写页面,撤销本次脚本选择,恢复之前备份的覆写方式和脚本,再重新加载。先保留正在进行的工作,不要直接删订阅、清空配置或关闭安全设置。