Skip to content

Repository files navigation

custom-proxy-rules

将公开规则源与你自己的域名、IP/CIDR 和覆盖规则合并,并在浏览器里生成面向 Shadowrocket 和 Clash/Mihomo 类客户端的配置。

特点

  • 聚合公开的 DIRECT、PROXY、REJECT 数据源
  • 支持裸域名、通配域名、IPv4、IPv6、CIDR 和完整规则语法
  • 自动规范化、去重、稳定排序并生成冲突报告
  • 本地规则优先于公开源,私有规则优先级最高
  • 私有目录默认被 Git 忽略,降低内网信息误提交风险
  • 静态网页支持 VLESS、VMess、Trojan 和 Shadowsocks 分享链接
  • 可按需启用广告拦截、代理域名、国内直连和 GEOIP 分流
  • 在线生成器默认引用 GitHub Pages 上每日发布的抓取规则,不展开十几万条规则正文
  • Shadowrocket 生成不内嵌节点的轻量 .conf 规则配置,并提供逐节点标准分享二维码
  • Clash/Mihomo 生成 .yaml,节点、策略组、fake-ip DNS、远程规则提供者和分流引用写在同一个文件里
  • 支持订阅链接;默认通过 https://convert.3tel.net 取得订阅节点
  • Clash/Mihomo 对 VLESS、VMess、Trojan 和 SS 直链优先在浏览器本地生成,避免旧版 subconverter 无法识别 VLESS 直链
  • 节点凭据只在浏览器本地处理,不上传、不存储
  • GitHub Actions 每日自动测试、构建规则并部署 GitHub Pages

快速开始

普通用户直接打开在线生成器:

https://3tel.github.io/proxy-rules/

粘贴节点或订阅链接、选择分流规则和策略,然后点击“生成配置”。Shadowrocket 会生成不含节点 的 .conf 规则配置;如果输入了节点或订阅,也会额外生成节点二维码。Clash/Mihomo 会生成 包含 proxiesproxy-groups、fake-ip DNS、rule-providersrules.yaml 文件。直接节点的 UUID、密码和服务器信息不会离开当前浏览器;订阅链接需要通过你指定的 subconverter 服务解析。

在线生成器默认会引用本项目发布到 GitHub Pages 的抓取规则:

  • rules/reject.list → 广告与追踪拦截
  • rules/proxy.list → 代理域名列表
  • rules/direct.list → 国内域名直连

生成 Shadowrocket 配置时,会使用 RULE-SET,URL,PROXY/DIRECT/REJECT 引用远程规则,不写入 [Proxy] 节点或 [Proxy Group]。生成 Clash/Mihomo 配置时,会使用 rule-providers 定义远程规则,再在 rules 中用 RULE-SET,名称,策略 引用。临时自定义规则仍会直接写进本次生成的配置。

单个节点二维码使用原始标准分享链接,可以直接扫码添加。Shadowrocket 的扫码入口不接受 普通二维码中的完整配置正文,因此网页不会再生成无效的“整份配置二维码”。完整配置请下载 .conf 文件,再从 iOS“文件”中用 Shadowrocket 打开,或进入 Shadowrocket 的“配置”页面导入。

客户端支持

本项目只聚焦两类客户端:

  • Shadowrocket:生成包含 [General][Rule] 的轻量 .conf,不内嵌节点,并为每个节点生成标准分享二维码。
  • Clash/Mihomo:生成包含节点、策略组、fake-ip DNS、rule-providersrules 的一体化 .yaml,抓取规则通过远程 provider 引用。

订阅解析默认使用项目维护的 https://convert.3tel.net subconverter 服务,也可以替换成其他 服务地址。网页只有在用户明确勾选同意后才会发送订阅信息;转换服务会接触订阅地址、UUID 和密码等节点信息。

输入框支持一行一个 HTTP/HTTPS 订阅链接,也可同时填写多个订阅地址进行合并。选择 Shadowrocket 时,可以不填写任何节点,直接生成规则配置。直接节点仍在浏览器本地解析;如果 输入中包含订阅链接,则使用用户填写的 subconverter 服务以 mixed 格式解析订阅,并只用于 生成节点二维码。Shadowrocket 的 PROXY、DIRECT、REJECT 规则会分别指向客户端内置策略 PROXYDIRECTREJECT,最终未匹配流量默认进入 PROXY

选择 Clash/Mihomo 时,VLESS、VMess、Trojan 或 SS 直链会直接写入 proxies;订阅链接会先 通过 subconverter 取得节点,再在浏览器里合并本项目远程规则引用、自定义规则和最终策略。 VLESS Reality 等新协议字段需要使用支持相应协议的 Clash Meta 客户端。

Clash/Mihomo 生成的 DNS 默认使用 fake-ip 模式:fake-ip-range240.0.0.1/8,国内默认 DoH 为阿里 DNS 和腾讯 DNS,海外 geosite:geolocation-!cn DNS 请求通过 #PROXY 走代理。 订阅转换服务返回的 DNS 会被本项目模板覆盖,保证生成配置的 DNS 行为一致。

本地构建需要 Node.js 20 或更高版本:

cp -R rules/private.example rules/private
npm test
npm run build

不下载公开源、只验证本地规则:

npm run build:local

一般用户只需订阅合并模块:

https://raw.githubusercontent.com/3tel/proxy-rules/main/dist/shadowrocket/all.module

生成文件位于 dist/shadowrocket/

  • all.module(推荐,包含全部规则)
  • direct.module
  • proxy.module
  • reject.module
  • direct.listproxy.listreject.list(供网页生成的配置引用)

构建统计和前 100 条冲突写入 build-report.json

添加自定义规则

公开规则写入 rules/local/direct.txtproxy.txtreject.txt。真实内网信息写入同名的 rules/private/ 文件。后者不会被 Git 跟踪。

每行一条,支持以下写法:

example.com
*.internal.example
10.10.0.0/16
fd00::/8
DOMAIN,api.example.com,PROXY
IP-CIDR,203.0.113.0/24,DIRECT,no-resolve

裸域名和 *.域名 都会转换为 DOMAIN-SUFFIX。IP 地址和 CIDR 会自动识别 IPv4/IPv6、 规范网络地址,并添加 no-resolve

冲突规则

同一个目标同时出现在多个策略中时,优先级为:

rules/private > rules/local > REJECT 公开源 > PROXY 公开源 > DIRECT 公开源

因此可以在 rules/private/direct.txt 中把被公开广告源误杀的内部域名强制改为 DIRECT。

数据源

数据源在 config/sources.json 中声明,目前默认使用:

本仓库只在构建时获取并转换这些上游数据。使用或再分发生成规则前,请同时检查各上游项目 的许可证和使用条款。详细边界见 SOURCES.md

隐私提醒

.gitignore 只能避免普通的 git add 误操作。不要使用 git add -f rules/private,也不要把 含有内部信息的生成文件发布到公共仓库。如果需要跨设备同步真实内网规则,建议使用单独的 私有仓库或加密存储。

About

可自定义域名和内网 IP,自动聚合、去重并生成多平台代理分流规则。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages