如何定时更新机场节点并导入自己维护的分流规则?
但自己又想维护一套分流规则。要怎么处理?
现在用 iOS 小火箭和 stash 。
自己造个轮子也不难,想知道你们有没有更好的方法。
xiaohack博客专注前沿科技动态与实用技术干货分享,涵盖 AI 代理、大模型应用、编程工具、文档解析、SEO 实战、自动化部署等内容,提供开源项目教程、科技资讯日报、工具使用指南,助力开发者、AI 爱好者获取前沿技术与实战经验。
极简自用,无花里胡哨,核心需求:精确分流
使用方法:
function main(config) {
const allProxies = (config.proxies || []).map((p) => p.name).filter(Boolean);
// --- 1. 全局资源与性能优化 (Hackl0us & Loyalsoldier) ---
config["ipv6"] = false;
config["unified-delay"] = true;
config["tcp-concurrent"] = true;
// 开启 Geodata 模式(必须开启才能使用 geosite/geoip 规则)
config["geodata-mode"] = true;
// 加载器设为 standard 或 memconservative 均可
config["geodata-loader"] = "standard";
// [核心] 替换为高精度资源地址 // 1. Geosite (域名): 使用 Loyalsoldier,规则最全
config["geosite-url"] = "https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat";
// 2. MMDB (IP): 使用 Hackl0us,国内 IP 精度最高 (小巧且精准)
config["mmdb-url"] = "https://cdn.jsdelivr.net/gh/Hackl0us/GeoIP2-CN@release/Country.mmdb";
// 3. GeoIP (备用): 虽然主力是用 MMDB,但防止内核回退,也指向 Loyalsoldier
config["geoip-url"] = "https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat";
// 自动判断下载 CDN(防止 Github 抽风)
config["find-process-mode"] = "strict";
config["sniffer"] = {
enable: true,
sniff: {
TLS: { ports: [443, 8443] },
HTTP: { ports: [80, "8080-8880"], "override-destination": true },
QUIC: { ports: [443] }
}
};
// --- 2. 策略组设置 --- const DNS_INTL_GROUP = "🛡️ DNS(国外)";
const NODE_GROUP = "🚀 节点选择";
const AUTO_GROUP = "♻️ 自动选择";
const AI_GROUP = "🤖 AI服务";
const EMBY_GROUP = "🎥 Emby服务";
const DIRECT_GROUP = "🎯 全球直连";
const FINAL_GROUP = "🐟 漏网之鱼";
// 筛选 AI 节点 (排除大陆和特定地区) const aiBlacklistRegex = /流量|到期|重置|香港|HK|Hong Kong|澳门|澳門|Macau|MO|俄罗斯|Russia|RU|伊朗|Iran|IR|朝鲜|North Korea|KP|叙利亚|Syria|SY|古巴|Cuba|CU|白俄罗斯|Belarus|BY|韩国|KR|Korea/i;
const aiFilteredProxies = allProxies.filter(name => !aiBlacklistRegex.test(name));
// 筛选 Emby 节点 const embyFilteredProxies = allProxies.filter(name => /Emby/i.test(name));
config["proxy-groups"] = [
{ name: NODE_GROUP, type: "select", proxies: [AUTO_GROUP, ...allProxies, "DIRECT"] },
{ name: DNS_INTL_GROUP, type: "url-test", url: "https://www.gstatic.com/generate_204", interval: 300, proxies: allProxies.length ? allProxies : ["REJECT"] },
{ name: AUTO_GROUP, type: "url-test", url: "https://www.gstatic.com/generate_204", interval: 300, tolerance: 50, proxies: allProxies.length ? allProxies : ["REJECT"] },
{
name: EMBY_GROUP,
type: "url-test",
url: "http://www.gstatic.com/generate_204",
interval: 300,
tolerance: 50,
proxies: embyFilteredProxies.length ? embyFilteredProxies : [NODE_GROUP]
},
{ name: AI_GROUP, type: "select", proxies: aiFilteredProxies.length ? [NODE_GROUP, ...aiFilteredProxies] : [NODE_GROUP, ...allProxies] },
{ name: DIRECT_GROUP, type: "select", proxies: ["DIRECT", NODE_GROUP] },
{ name: FINAL_GROUP, type: "select", proxies: [NODE_GROUP, DIRECT_GROUP] }
];
// --- 3. DNS 优化 --- const dnsCn = ["https://223.5.5.5/dns-query", "https://1.12.12.12/dns-query"];
const dnsIntl = ["https://8.8.8.8/dns-query", "https://1.1.1.1/dns-query"];
config["dns"] = {
enable: true,
ipv6: false,
"enhanced-mode": "fake-ip",
"respect-rules": true,
"dns-hijack": ["any:53"],
"nameserver": dnsCn,
"proxy-server-nameserver": dnsCn,
"fallback": dnsIntl,
"nameserver-policy": {
"geosite:cn": dnsCn,
"geosite:gfw,geolocation-!cn": dnsIntl
}
};
// --- 4. 规则逻辑 (完全依赖 Geosite + 手动补充) ---
config["rules"] = [
// 0. 本地网络 "IP-CIDR,127.0.0.0/8,DIRECT,no-resolve",
"IP-CIDR,192.168.0.0/16,DIRECT,no-resolve",
"IP-CIDR,10.0.0.0/8,DIRECT,no-resolve",
"IP-CIDR,172.16.0.0/12,DIRECT,no-resolve",
// 1. Apple 登录鉴权 "DOMAIN,appleid.apple.com," + AI_GROUP,
"DOMAIN,idmsa.apple.com," + AI_GROUP,
"DOMAIN,gsa.apple.com," + AI_GROUP,
"DOMAIN,identity.apple.com," + AI_GROUP,
// 2. Emby // 3. Apple 其他服务 "GEOSITE,apple," + DIRECT_GROUP,
"DOMAIN-SUFFIX,apple.com," + DIRECT_GROUP,
"DOMAIN-SUFFIX,icloud.com," + DIRECT_GROUP,
// 4. 社交软件直连 "DOMAIN-KEYWORD,tencent," + DIRECT_GROUP,
"DOMAIN-KEYWORD,qq," + DIRECT_GROUP,
"DOMAIN-KEYWORD,wechat," + DIRECT_GROUP,
// 5. 拦截 "AND,((DST-PORT,443),(NETWORK,UDP)),REJECT",
"DOMAIN,dns.google," + DNS_INTL_GROUP,
"DOMAIN,cloudflare-dns.com," + DNS_INTL_GROUP,
"DST-PORT,53,REJECT",
// 6. AI 规则 (使用 Loyalsoldier 的 Geosite 分类) "GEOSITE,openai," + AI_GROUP,
"GEOSITE,anthropic," + AI_GROUP,
"GEOSITE,x," + AI_GROUP,
"GEOSITE,google," + AI_GROUP,
"GEOSITE,youtube," + AI_GROUP,
"DOMAIN-SUFFIX,bard.google.com," + AI_GROUP,
"DOMAIN-SUFFIX,gemini.google.com," + AI_GROUP,
"DOMAIN-SUFFIX,bing.com," + AI_GROUP,
// 7. 国内分流 (使用 Hackl0us MMDB) "GEOSITE,cn," + DIRECT_GROUP,
"GEOIP,CN," + DIRECT_GROUP + ",no-resolve",
// 8. 兜底 "MATCH," + FINAL_GROUP
];
return config;
}
SubBoost 是一个在线 Clash 订阅增强服务。可以将机场订阅或节点转换为优化的 Clash 配置文件,支持自定义代理组、分流规则、DNS 配置等高级功能。
经过两周的测试修复,目前主要功能已经稳定运行。因此将于 1 月 11 日 22:00 分删库,转为长期运行。届时需要重新注册,请备份重要数据。
使用教程见 [教程 3.0] 草履虫也能学会的 Clash 配置:UI 界面一键配置精确分流、链式代理。
部分机场采用严格加密或者限制 CN IP 导入,url 链接无法直接导入。请手动复制订阅内容。
Gemini:由于 Gemini 验证机制调整,目前必须将 Gemini 和 Google 分流至同一节点才可正常使用。默认 Gemini 位于 AI服务分流之中,也提供单独的 Gemini 分流组供手动选择。
谷歌学术:由于谷歌学术对 IP 质量要求高于其它 Google 服务,目前默认谷歌学术位于教育资源分流之中,也提供单独的谷歌学术分流组供手动选择。
可在我的订阅页面开启自动更新,最低间隔 12 小时,开启后会自动定时拉取机场 url。
期间在客户端更新订阅都会使用上次自动更新的缓存,因此数据不变。所以请不要频繁更新客户端导入的订阅!
客户端订阅卡片的流量和到期日期会将所有机场的数据透传并叠加,叠加逻辑为:流量相加,到期日期取最短。
反馈可复现 bug 可获得价值 1500 LDC 的帕米尔大学 AU 校区资格.
一套基础功能完善的代理解决方案,实现:1. 多订阅统一分流规则 2. 自定义多组自动选取 3. 跨端同步配置 4.TUN 与应用白(黑)名单 5. 日志与连接监控 6.FakeIP 与 DNS 分流 7. 内置开箱即用分流规则
Win:github release 下载 exe
Linux:release 有 deb rpm appimage,arch 的 aur 可下载 PKGBUILD 改为最新版本本地 makepkg -si
可参考如下配置
白名单是√了的才走代理
如下为关闭,只有√了才绕过,默认是走代理,适用于需要代理的应用远多于不需要的
为什么需要分流规则? - 1. 绕开 IP 限制与风控 2. 在对部分服务(如 AI)维持 1 的基础上部分(如 Google 搜索)服务选择速度较快的节点 3. 保持部分服务(如 X)IP 区域
使用后的示例场景:在使用 HK 节点减小 Google 搜索时延的基础上,通过 US 节点保持 AI 服务最新(Google AI 相关服务优先 US 上线),使用 JP 节点访问社媒 X,获取相关区域内容推荐
不使用的示例场景:使用了没有解锁的节点导致不能访问,原因包括:1. 处于不提供服务的区域(AI 限制,OpenAI,Claude,Gemini,HK 节点无法访问),日厂游戏锁 JP 2. 节点风控(Youtube 可访问但点不开视频 / 一步一个 CF 人机验证) 3. 节点在某些站点跳 CN 或 HK(可访问某些网站但 xx 不可访问)
在不考虑节点自身特殊情况下,一般常用以下区域的节点:
US(Google 服务优先于 US 上线,部分时候仅限 US)
JP(日厂游戏锁 IP,社交媒体,流媒体审核)
HK(地域上近,时延低,B 站港澳台)
TW(巴哈姆特动画站点等锁 TW IP)
KR,SG(地域上近,时延相对低)
节点的解锁情况会影响到分流的设置决策,如 HK 节点如果以其他区域解锁 AI,也可以访问 AI 服务
一般机场测评与群中(各类 tg 频道)都有类似以下的表格,写明节点各流媒体等解锁情况,如要付费,建议先了解解锁情况
较好
较差
编辑界面与添加预设界面,可以在添加预设里勾选需要的规则
单击对应分流组可自行补充分流相关
GA(自定义,可选) - 写在广告拦截前,避免 Google Analysis 被当广告拦截,如果不使用相关服务,可以不加
可以考虑合并 AI 相关为一个分流组,用于 AI 相关访问
linux.do(自定义) - 用于直连网站 (初次时 L 站仍可直连)
理论上可以将同区域放一个自动选择组里,设置好后无感使用,但实测尽管检查节点存活时间设置已经为较大值,仍会频繁切换节点,容易被风控,不推荐使用
功能在分流→自定义自动选择,比如此处将不同机场的 US 节点聚合起来使用
规则 → 按分流规则走代理
全局 → 无视分流规则走代理
代理 → 支持代理(如果软件不支持,需要通过 fiddler 这类应用相关应用提供支持,通过 fiddler 代理对应应用的流量)且设置了代理的应用按照规则 / 全局走代理
TUN → 所有应用按照规则 / 全局走代理
在支持代理的应用中,如果仅使用系统代理,需要自行在所有需要代理的软件中全部作代理相关设置(如果设置变更,比如代理端口,对应所有应用都需要更改,除非自动识别),TUN 模式下不需要任何的配置,也不需要软件支持代理,可以无感地使用代理,常见代理模式下需要自行设置的场景包括:
终端 PowerShell
比如 wget 等命令行程序的对外访问依赖于相应 shell 的代理设置
系统代理在没有设置 https_proxy 与 http_proxy 两个环境变量的情况下,wget 会超时取不到 index.html,TUN 模式不需要这些设置
git
印象里 windows 下 git 是不走命令行的环境变量的,需要使用自己的代理设置,比如如下全局的 http 与 https 代理设置(访问本地应用不应写成 https)
配置后可以稳定高速的使用 git clone(此处示例 fatal 为 ctrl + c 中断)
TUN 下置空两个代理设置一样正常访问
JavaScript 的 fetch api,参考下文设置,本身是 fetch api 需要引入依赖的 undici 显式设置代理,也是个不认环境变量的
Docker,参考下文 Docker 代理问题,pull 镜像的时候也是需要自行配代理
Windows 下 TUN 模式开启需要以管理员权限启动程序,而软件设置的开机自启不能以管理员权限启动程序,使得每次开机需要自行右键管理员权限启动,比较麻烦,以下展示如何通过任务计划实现以管理员身份开机自启 Karing
注:安卓上默认开启 TUN 模式,结合绕开代理的应用设置很好用
开启 TUN 后的图标显示
![[2026.1.6] Karing 施法指北35](https://xiaohack.oss-cn-zhangjiakou.aliyuncs.com/typecho/images/2026/01/06/20260106185926_695ceb0ea4c49.png!mark)
确定后完成创建任务,回到 karing 关闭自启选项
可重启验证是否成功自启与 TUN 自动开启
DNS 参见如下设置,可以采用自动设置功能
建议开启严格路由,防止请求同时发到 TUN 跟其他网络(win)
最终效果上,必须在仅开启 TUN 的基础上,不出现 DNS 泄露
如有海外站点访问不了大概率节点风控,自行通过网络检测 debug
from
to
如果仅使用系统代理,或仅在浏览器层面希望不出现泄露,参考以下测试结果足以
在设置里测试结果应类似于下方结果,不能有任何 CN 的,包括 IP 地址与测出的 DNS
如果使用 TUN,希望包括本地应用等均不出现 DNS 泄露
在浏览器测试之外,进一步地,可以检查 dns 解析与 Wireshark 抓包
检查解析方法 - 检查 nslookup dns 解析
应满足:
1. 默认 nslookup 的 dns 请求(无论直连,代理)均发向 TUN 设定网关(karing 默认 10.20.0.2)(直连流量直接解析出目标 ip,代理流量返回 FakeIP,198.20.x.y,符合预期)
2. 开启 DNS 劫持后,以任意 DNS 服务器请求解析,应返回统一的劫持后结果,即 198 开头的 FakeIP
3. 直连与代理 DNS 请求均被拦截,仅直连 DNS 请求被放行
访问油管,站点本身与相关的其他海外请求 DNS 进入 karing,但不从本地发出(通过代理协议包裹给了代理服务器作解析)
访问 b 站,DNS 请求进入 karing,直接放行
(可选)可进一步确认,直连流量走的 DNS 服务器与设置相同
类似地。在 Linux 上应有:
推荐阅读:
https://blog.skk.moe/post/what-happend-to-dns-in-proxy
https://blog.skk.moe/post/lets-talk-about-dns-cdn-fake-ip
(,好像不能显示预览,丢个图上去
pkgname=karing-bin
pkgver=1.2.10.1308
pkgrel=1
pkgdesc="Simple & Powerful proxy utility, Support routing rules for clash/sing-box"
arch=('x86_64')
url="https://github.com/KaringX/karing"
license=('GPL-3.0-or-later')
depends=('gtk3' 'libayatana-appindicator' 'glib2' 'libnotify' 'libsecret' 'xdg-user-dirs' 'zenity' 'libkeybinder3')
optdepends=('libappindicator-gtk3: for system tray icon support')
provides=('karing')
conflicts=('karing' 'karing-git')
source=("${pkgname}-${pkgver}.deb::https://github.com/KaringX/karing/releases/download/v${pkgver}/karing_${pkgver}_linux_amd64.deb")
sha256sums=('SKIP')
package() {
cd "${srcdir}"
bsdtar -xf "${pkgname}-${pkgver}.deb"
bsdtar -xf data.tar.zst -C "${pkgdir}"
find "${pkgdir}" -type d -exec chmod 755 {} \;
if [ -d "${pkgdir}/usr/share/karing" ]; then
find "${pkgdir}/usr/share/karing" -type f -name "karing" -exec chmod 755 {} \;
fi
rm -rf "${pkgdir}/usr/share/doc"
install -dm755 "${pkgdir}/usr/bin"
ln -sf "/usr/share/karing/karing" "${pkgdir}/usr/bin/karing"
}
( 连接无法复制过来,在此处补充正文缺失的连接:
IP 风控: https://ipdata.co/
测速:https://speed.cloudflare.com/ https://www.speedtest.net/
karing tun 与代理区别文档: FAQ | Karing - Clash compatible & Powerful proxy utility
fetch api 代理:https://blog.csdn.net/m0_58360315/article/details/137288725?spm=1001.2014.3001.5501
dns 泄露测试与分流: IPCheck.ing - Check My IP Address and Geolocation - Check WebRTC Connection IP - DNS Leak Test - Speed Test - Ping/MTR Test - Jason Ng Open Source
https://www.dnsleaktest.com/results.html
拓展阅读:
https://blog.skk.moe/post/what-happend-to-dns-in-proxy/
https://blog.skk.moe/post/lets-talk-about-dns-cdn-fake-ip/