好文集ChatGPT Plus¥119

家宽IP教程第三篇:分流规则怎么配?让指定应用走指定节点,小火箭、QX、Clash一次讲清

文章目录

家宽IP配置教程 · 第3篇 分流

前两篇给大家介绍了怎么把家宽接到美西节点后面:

第一篇在Clash Verge里用脚本做客户端链式

嵌入推文(联网查看)

第二篇在3x-ui里做服务端链式,多出一个家宽节点

嵌入推文(联网查看)

没看前两篇也没关系:只要你手上有一个想单独给某个应用用的节点,家宽、落地机、某个地区的VPS都行,这篇的做法都能直接套。

节点有了,接下来的问题是:哪些流量该走它?

全局开肯定不行,家宽又慢又贵。正确的做法是分流:需要干净IP的应用走家宽,其他照旧走原节点。

不管用哪个客户端,配置分流都是三步:建一个家宽策略组→添加应用的规则集并指向这个组→把这条规则放在前面。

这篇先把分流的原理讲清楚,再用𝕏做例子,在小火箭、QX和Clash里各配一遍,让𝕏的流量走指定的家宽节点。换成TikTok、PayPal或者别的应用,做法完全一样,改一个名字就行。

依旧叠个甲:这是我自己的用法,不一定是最优解。有更好的玩法,欢迎在评论区补充。

分流到底在做什么

客户端每收到一个请求,都要回答一个问题:这个请求交给谁?

分流就是提前写好答案。说白了只有三件事:

1. 规则:什么样的流量

一条规则描述一类流量,最常用的是这三种:

类型匹配什么例子
域名后缀这个域名和它所有的子域名x.com能匹配x.com、api.x.com
域名关键词域名里带这个词的twitter能匹配abc.twitter.com
IP段直接连IP、没有域名的请求199.59.148.0/22

2. 策略:交给谁

命中规则之后,流量交给一个策略。策略可以是:

  • 一个节点:比如家宽节点。

  • 一个策略组:组里放几个节点,手动或自动选一个。

  • 直连或拒绝:不走代理,或者直接拦掉。

文章配图

  1. 分流顺序:从上往下,命中就停

客户端拿着请求从第一条规则往下比,命中第一条就不再往下看。第二篇里Xray的路由规则也是这个逻辑。

这一点决定了大部分「配了不生效」的问题:你加的规则排在后面,前面已经有一条「国外网站走代理」把它拦走了,你的规则根本轮不到。比如下图里apps.mzstatic.com我配了两条,一条直连、一条走美国节点,实际生效的只有排在前面的直连。

严格来说,只要排在会匹配到同一批域名的规则前面就行。但订阅自带的规则里多半已经有𝕏,自己很难一条条查,所以最省事的做法是直接放第一行。

文章配图

规则集:别人帮你整理好的一组规则

一个应用往往有十几到几十个域名,自己一条条找既麻烦又容易漏。

规则集就是把一个应用的规则打包成一个远程文件,客户端定期自动更新。用的时候直接填链接就行,你只要做一件事:把整个规则集指向一个策略。

所以整件事可以简化成一句话:

某个应用的规则集 → 指向家宽策略 → 放在规则最前面

后面小火箭、QX和Clash的配置,都是在做这一件事。下图是我在QX里导入的常用规则集。

文章配图

规则不一定要自己写

用机场的朋友,导入订阅时就已经带了一整套分流规则。这也是为什么后面一直强调新规则要放在前面:订阅自带的规则里多半已经有𝕏。

规则也可以写在服务器上,第二篇里Xray的路由规则就是。这篇只讲客户端,因为改起来最方便,每台设备也能分得不一样。

哪些应用适合走家宽

家宽不是越多越好。我这个香港家宽一个月1.5刀,便宜,但有两个硬伤:

  • 慢。 VPS在美西,家宽在香港,每个请求要横跨太平洋绕一圈。第二篇测过,每个请求多了0.7到0.8秒,差不多翻倍。

  • 不支持UDP。 语音、视频通话、游戏基本都用不了。

另外,分流不只是为了干净IP,也能解决地区问题。比如Netflix在不同地区能看的片库不一样,想看哪个地区的,用分流把它指到那个地区的节点就行。视频吃流量,这种一般用机房VPS,不用家宽。

我自己这个香港家宽是这么分的:

适合走家宽不适合走家宽
在意账号地区的社交平台,比如𝕏视频、直播,吃流量又吃速度
账号注册、登录、风控严的网站下载、系统和App更新
支付、银行类游戏、语音视频通话,要UDP

还有一条更重要:家宽的地区要和服务对得上。 ChatGPT和Claude不支持香港IP,香港家宽给它们用反而会出问题,所以我的AI服务照旧走美西。想让AI走家宽,就要买美国家宽。

同一个应用的域名要整组走同一个出口。主站走家宽、登录接口走机房,网站看到IP来回跳,比不用家宽还可疑。这也是为什么推荐用规则集,而不是自己挑几个域名。

我目前只给𝕏一个用,下面就用它做例子。

例子:为什么给𝕏单独走家宽

𝕏去年上线了「关于此账号」,会显示账号所在的国家或地区。

按公开报道,这个地区主要根据你经常连接𝕏时的IP推断;𝕏还有一份VPN和代理IP的名单,识别出来的会标注「地区可能不准确」。而且地区不是实时变的,官方说是延迟、随机地更新。

我之前一直用美西的机房IP刷𝕏,显示的自然是美国。最近想切换到香港地区,所以买了香港家宽,配了这个分流。

不过我切过去快一周了,目前显示的还是美国,不知道什么时候会变。

去哪找规则集

我用的是blackmatrix7大佬的仓库,几百个常见应用都有,QX、Clash、小火箭各一份。

链接是有规律的:

https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/客户端/应用名/应用名.后缀
客户端目录名后缀
小火箭Shadowrocket.list
QXQuantumultX.list
ClashClash.yaml

应用名就是仓库里的目录名。几个常用的:

应用目录名
𝕏Twitter
TikTokTikTok
PayPalPayPal
InstagramInstagram
TelegramTelegram
RedditReddit

注意𝕏的规则还叫Twitter,没改名。比如Clash版的𝕏规则就是:

https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Twitter/Twitter.yaml

其他应用去仓库的rule/Clash目录里搜名字就行。

文章配图

用之前点开看一眼。 𝕏这份一共33条,x.com、twitter.com、t.co、图片视频用的twimg.com都在,还有一条grok.com。也就是说,配完之后网页版Grok也会跟着走家宽。实测香港节点可以注册使用Grok。

想要更多现成规则

除了blackmatrix7,我之前还分享过三期代理工具的宝藏仓库,分流规则、去广告、应用增强都有,按自己用的工具看:

嵌入推文(联网查看)

嵌入推文(联网查看)

嵌入推文(联网查看)

不管规则来自哪个仓库,用法都一样:找到规则集的链接,指向家宽策略,放在最前面。

仓库里没有的应用

自己写单条规则。域名从哪来?先正常用一会儿这个应用,去客户端的连接记录里看它连了哪些域名,把主域名或IP记下来,再写成规则。比如下面这个Clash日志,每一行都能看到请求的域名和命中的规则。

文章配图

小火箭配置

小火箭里用的是第二篇的服务端家宽节点。分两步:建一个分组,再把规则集指向它。

改的是配置文件:「配置」页,点当前使用的配置,选「编辑纯文本」。不习惯改文本的,选「编辑配置」用图形界面也一样。

文章配图

第一步:建一个家宽分组

在[Rule]上面加一段[Proxy Group](大部分配置默认没有这一段,自己加就行):

[Proxy Group]
家宽节点 = select,policy-regex-filter=家宽
  • 家宽节点是分组名,select表示手动选择。

  • policy-regex-filter=家宽:名字里带「家宽」的节点自动进这个组,不用手抄节点名。所以记得把家宽节点的名字里带上「家宽」两个字。

  • 截图里选中的是台湾家宽:我有两个家宽,名字里都带「家宽」,所以都自动进了这个组,想用哪个在分组里点选就行。

为什么用分组而不是直接写节点名?以后换了家宽、加了第二个家宽,规则都不用改。

第二步:加规则集

在[Rule]下面,第一行加:

RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/Twitter/Twitter.list,家宽节点

意思就是那一句话:𝕏的规则集,交给家宽节点分组。放第一行,是为了排在其他规则前面。

想加别的应用,复制一行,把两处Twitter换成目录名。自己写的单条规则也放在[Rule]里:

DOMAIN-SUFFIX,example.com,家宽节点

保存后回到首页,「全局路由」要选「配置」。选「代理」的话所有流量都走同一个节点,分流不生效。

QX配置

QX里同样用第二篇的服务端家宽节点。分两步:建一个策略组,再把规则集指向它。

第一步:建一个家宽策略组

打开配置文件编辑,在[policy]下面加一行:

static=家宽节点, server-tag-regex=家宽
  • 家宽节点是策略组的名字,随便起。

  • server-tag-regex=家宽:名字里带「家宽」的节点自动进这个组,不用手抄节点名。所以记得把家宽节点的名字里带上「家宽」两个字,比如我的叫WebShare_🇭🇰家宽。

文章配图

为什么不直接把规则指向家宽节点?以后换了家宽、加了第二个家宽,规则都不用改。加再多应用,也都指向这一个组。

第二步:加规则集

在[filter_remote]下面加一行:

https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/Twitter/Twitter.list, tag=Twitter, force-policy=家宽节点, update-interval=172800, opt-parser=false, enabled=true

force-policy=家宽节点的意思是:不管规则文件里写的策略是什么,命中的都交给家宽节点这个策略组。

文章配图

这一行要放在其他规则集的前面,原因就是前面说的顺序问题。

文章配图

想加别的应用

在[filter_remote]里复制一行,把链接换成仓库里其他应用的,tag也改一下:

https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/PayPal/PayPal.list, tag=PayPal, force-policy=家宽节点, update-interval=172800, opt-parser=false, enabled=true

自己写的单条规则放在[filter_local]里:

host-suffix, example.com, 家宽节点

文章配图

Mac端Clash Verge配置

Clash(mihomo内核)里的规则集叫rule-providers。同样写在订阅的扩展脚本里,订阅更新也不会被覆盖。扩展脚本怎么打开,第一篇第二步写过。

Clash这边我接着用第一篇的客户端链式。把扩展脚本里的内容整段替换成下面这段,再把住宅节点的四项信息改成你自己的,和第一篇一样:

// 链路:本机Clash -> 订阅原有节点(前置) -> 住宅IP(落地) -> 目标网站

// 住宅节点:四项信息来自购买的后台
const RESIDENTIAL = {
  name: "🏠 住宅IP-US", // 可以改名,但要保留「住宅IP」字样(下面按它做过滤)
  type: "socks5", // 不通时可以改成 "http"
  server: "你的代理主机",
  port: 5001,
  username: "你的账号",
  password: "你的密码",
};

const FRONT_GROUP = "🔗 住宅前置"; // 住宅节点经由谁连出去
const EXIT_GROUP = "🏠 住宅出口"; // 住宅IP的统一出口
const TWITTER_GROUP = "🐦 Twitter"; // 𝕏单独一个分组,在界面里选它走哪个出口

// 默认就走住宅出口的网站。这里先放IP检测类网站,用来验证
const RESIDENTIAL_RULES = [
  "DOMAIN-SUFFIX,ipinfo.io",
  "DOMAIN-SUFFIX,ping0.cc",
  "DOMAIN-SUFFIX,ippure.com",
  "DOMAIN-SUFFIX,ipsuper.com",
  "DOMAIN-SUFFIX,net.coffee",
  "DOMAIN-SUFFIX,scamalytics.com",
  "DOMAIN-SUFFIX,browserleaks.com",
  "DOMAIN,speed.cloudflare.com",
];

function main(config, profileName) {
  const proxies = config.proxies || [];
  const groups = config["proxy-groups"] || [];

  // 订阅原有的全部节点,作为前置。每次动态获取,节点改名也不受影响
  const frontNames = proxies.map((p) => p.name);
  if (frontNames.length === 0) return config;

  for (const g of groups) {
    // 会自动收录全部节点的分组:把住宅节点排除,避免被自动测速选中
    if (g["include-all"] || g["include-all-proxies"]) {
      g["exclude-filter"] = g["exclude-filter"]
        ? `${g["exclude-filter"]}|住宅IP`
        : "住宅IP";
    }
    // 给所有手动选择的分组追加「住宅出口」选项(广告拦截类分组除外)
    const isSelect = g.type === "select" && Array.isArray(g.proxies);
    if (isSelect && !g.proxies.includes("REJECT")) {
      g.proxies.push(EXIT_GROUP);
    }
  }

  // dialer-proxy:连接住宅节点之前,先经过前置组。这一行就是链式代理
  proxies.push({ ...RESIDENTIAL, "dialer-proxy": FRONT_GROUP });

  groups.push(
    { name: FRONT_GROUP, type: "select", proxies: frontNames },
    // 第二个选项用于故障回退:跳过住宅IP,直接从前置节点出去
    { name: EXIT_GROUP, type: "select", proxies: [RESIDENTIAL.name, FRONT_GROUP] },
    // 𝕏的分组:默认走住宅出口,也可以换成订阅里的任意节点
    { name: TWITTER_GROUP, type: "select", proxies: [EXIT_GROUP, ...frontNames] },
  );

  config.proxies = proxies;
  config["proxy-groups"] = groups;

  // 𝕏的规则集:每天自动更新,规则文件经由前置节点下载
  config["rule-providers"] = {
    ...(config["rule-providers"] || {}),
    "twitter-custom": {
      type: "http",
      behavior: "classical",
      format: "yaml",
      url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Twitter/Twitter.yaml",
      path: "./ruleset/twitter-custom.yaml",
      interval: 86400,
      proxy: FRONT_GROUP,
    },
  };

  // 新规则放在最前面,优先于订阅自带的规则
  config.rules = [
    `RULE-SET,twitter-custom,${TWITTER_GROUP},no-resolve`,
    ...RESIDENTIAL_RULES.map((r) => `${r},${EXIT_GROUP}`),
    ...(config.rules || []),
  ];
  return config;
}

比第一篇多了三处:

做了什么为什么
新建🐦 Twitter分组,默认选住宅出口在界面里随时切换𝕏走哪个出口,订阅里有第二篇的家宽节点也能直接选
引用blackmatrix7的𝕏规则集,每天更新不用自己维护域名
规则集放在最前面不被订阅自带的规则拦走

规则文件经由前置节点下载,因为国内直连raw.githubusercontent.com经常下不下来,也不耗家宽流量。

保存后Clash Verge会自动重新加载,「代理」页面里会多出🐦 Twitter分组。

想加别的应用

在rule-providers里照着复制一份,把名字和链接里的Twitter换掉:

    "paypal-custom": {
      type: "http",
      behavior: "classical",
      format: "yaml",
      url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/PayPal/PayPal.yaml",
      path: "./ruleset/paypal-custom.yaml",
      interval: 86400,
      proxy: FRONT_GROUP,
    },

再在config.rules里加一条,直接走住宅出口:

`RULE-SET,paypal-custom,${EXIT_GROUP},no-resolve`,

自己写的单条规则,加到RESIDENTIAL_RULES里就行。

怎么确认生效

别用IP检测网站验证。 这次的规则只管你加的应用,ippure、ping0这些网站不在里面,打开看到的还是原节点的IP,这是正常的。Clash的脚本里专门把IP检测网站指向了住宅出口,打开能看到住宅IP,但这只能说明住宅出口能用,不能说明𝕏走了它。

直接看连接记录:

  • 小火箭:打开𝕏刷一会儿,在请求记录里找x.com,看策略是不是家宽节点。

  • QX:打开𝕏刷一会儿,进「网络活动」,找x.com、twimg.com,策略那一栏应该是家宽节点。

  • Clash Verge:左侧「日志」页面,搜x.com,能看到match RuleSet(twitter-custom) using 🐦 Twitter[🏠 住宅IP-US]。

文章配图

文章配图

如果看到的还是原节点,九成是顺序问题,回去把它挪到最前面。

容易踩的坑

自动测速的分组会选中家宽节点。 用第二篇服务端方案的,家宽节点就在订阅里,「自动选择」这类分组可能把它测出来,让所有流量都走家宽。Clash用上面的脚本已经处理过这个问题,会按「住宅IP」把住宅节点排除掉;服务端方案要在客户端里把它从自动分组里排除,比如在自动分组的节点筛选里,用正则去掉名字带「家宽」的节点。

应用里的图片视频也会走家宽。 比如𝕏的图片和视频都在twimg.com下面。家宽套餐一般按流量算,刷图文用不了多少,常看视频的话就要留意剩余流量。给视频类应用配家宽之前,先想清楚流量够不够。

𝕏的广告不会再被拦。 𝕏的规则集里有ads-twitter.com,ads-api.x.com也会被x.com匹配到。规则集放在第一行,这些请求会先交给家宽,轮不到后面的去广告规则。介意的话,把对应的拒绝规则挪到它前面。

慢一点是正常的。 每个请求多0.7到0.8秒,刷时间线基本无感,发视频、看长视频会明显一点。

截图分享前记得打码:节点名、UUID、VPS的IP、家宽的账号密码。

写在最后

到这里,𝕏就单独走上了家宽,其他应用照旧走原节点。总结一下三个客户端的配置:

步骤小火箭QXClash Verge
建分组[Proxy Group]里用policy-regex-filter[policy]里用server-tag-regex脚本里新建🐦 Twitter分组
加规则集[Rule]第一行加RULE-SET[filter_remote]最前面加一行,force-policy指向分组rule-providers里加规则集,指向分组
确认生效全局路由选「配置」,看请求记录看网络活动看「日志」页面

说实话,上面这些内容你完全不需要理解。不想折腾的话,把这篇文章和你的配置文件一起丢给Agent,告诉它「让𝕏走家宽节点」,剩下的让它帮你配就行。但如果你想搞懂分流到底在做什么,以后配了不生效能自己看出问题在哪,前面的原理还是值得花几分钟看一遍。

家宽IP这个系列到这里就写完了:

  1. 客户端链式:一台电脑,粘贴一段脚本。

  2. 服务端链式:配一次,全家设备都能用。

  3. 分流(本文):规则集指向家宽,放在前面。

三篇其实是一件事的三个环节:前两篇解决「怎么接上家宽」,这篇解决「哪些流量该走它」。手上是什么情况,就从哪一篇开始。

想把小火箭、Loon、QX用得更深一点,可以接着看前面的三期宝藏仓库:小火箭、Loon、QX。

𝕏的地区什么时候变成香港,我会在评论区更新。

感谢看到这里,如果这篇文章对你有帮助的话,欢迎关注、点赞、收藏。如果有其他想看的干货文章或者文章中存在错误的地方,也欢迎在评论指出。我们下篇文章再见。

全文完
查看原文