图文介绍与操作示意
分别验证网页、代码与下载资源,找到开发访问的实际出口。 配图取自 Clash Verge Rev 官方自定义规则文档,用于说明规则编辑入口。本页配置讲解由本站整理。
根据 Clash Verge Rev 官方自定义规则文档(新窗口) 整理
操作流程示意由科学之家绘制,非软件界面截图;其余配图来源见各图说明。菜单随软件版本变化。
01 · 先看懂这条规则
GitHub 的网页、原始文件、图片与发布附件可能使用不同域名。这份规则便于把已收录的相关域名集中交给一个策略。它适合开发资源访问分流,但客户端之外的命令行工具不一定自动使用系统代理,因此浏览器测试与 Git 命令测试应分开进行。
例如,仓库网页能打开,下载 Releases 附件或读取原始文件却很慢。先在连接记录里找出资源域名和当前出口,再判断是清单覆盖、规则顺序还是线路的问题。如果执行 Git 命令时记录里完全没有连接,应先检查工具是否使用了代理。
先认识四个词
- 域名
- 网站的文字地址,例如
github.com。网址中的协议和页面路径不属于域名。 - 规则集
- 一份需要匹配的地址名单;本页提供的 MRS / SRS 是供对应内核读取的二进制文件。
- 策略 / 出站
- 命中后怎样处理连接:直接连接、交给已有代理组,或者拒绝连接。
- 命中
- 当前连接满足了某条规则。查看连接记录,才能知道实际采用了哪条规则。
02 · 它包含哪些内容?
适用范围
- github.com、githubusercontent.com、githubassets.com 等已收录域名后缀。
- 有助于管理仓库页面、部分原始文件、图片、静态资源与下载资源请求。
- 适合将开发资源集中到一个可调整的策略,而不影响其他网站。
需要另外判断的情况
- 不是 Git 配置工具,不会自动为终端、IDE、容器或包管理器设置代理。
- 第三方镜像、外部依赖和其他包仓库不一定属于 GitHub 集合。
- SSH 连接能否被接管与浏览器访问不同,不能仅用网页结果推断。
从上游清单中取出的真实条目
在 核对的文本清单中,共有 64 条非注释条目。以下只展示部分示例,数量和内容会随上游更新变化,也不代表你此刻客户端已加载的数量。
+.github.com
+.githubassets.com
+.githubusercontent.com+.example.com 这种写法表示域名后缀匹配,涵盖根域名与子域名;没有此前缀的条目按其实际语法解释。这些是域名匹配条件,后面没有写 DIRECT 或代理组,所以仍需为集合指定动作。
03 · 开始前,准备好这三件事
- 先备份当前配置。导出或复制当前正在使用的配置,并记录修改前的策略。已经有自定义规则时,保留它们;不要把本页片段当成完整订阅覆盖进去。
- 确认软件的内核。在“关于”或版本信息中找到内核名称。Mihomo 用 MRS;sing-box 用 SRS。只修改文件后缀不能转换格式。
- 确认已有连接能工作。本教程只添加分流。如果本来就无法连接,先完成客户端与节点设置。需要代理时,记下现有代理组的准确名称,包含空格和符号。
下面出现的“你的代理组名”和 your-proxy-tag 都是待替换文字。请换成当前配置里实际存在的名称;未替换时不要直接启用。
如果使用带订阅的客户端,优先采用它提供的规则编辑或扩展功能。直接修改下载下来的订阅原文,可能在下次更新时被覆盖。
04 · Mihomo:按图添加规则
下面以 Clash Verge Rev 为例。其他 Mihomo 客户端的菜单可能不同,但都需要两部分:先定义规则集,再添加引用它的路由规则。
确认规则模式,找到当前订阅
让客户端使用规则模式,打开订阅或配置列表,确认正在启用哪一份。先备份这份配置与已有扩展。全局代理或全局直连模式可能让你看不到预期的规则结果。
添加规则集定义
打开用于当前订阅的“扩展配置”编辑器,把下方 rule-providers 片段合并进去。如果原来已有这个顶层字段,把 science-github 这一项加在它下面,不要再写第二个同名顶层字段,也不要删掉原有集合。
rule-providers:
science-github:
type: http
behavior: domain
format: mrs
path: ./rules/science-github.mrs
url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/github.mrs"
interval: 86400type: http:通过链接获取远程规则。
behavior: domain:本页是域名集合;不要改成 ipcidr。
format: mrs:对应下面的 MRS 文件。
path:客户端保存规则的相对路径,不同集合应避免使用相同文件名。
interval: 86400:设置约一天检查一次更新;实际更新成功与否要看客户端记录。
保存后让当前配置重新生效。若提示 YAML 错误,先检查缩进是否使用空格、冒号后的空格是否保留,以及是否重复了同名字段。
在订阅中打开“编辑规则”
回到当前订阅卡片,右键打开菜单并选择“编辑规则”。下图为本站绘制的操作流程示意,用于帮助你找到入口;实际菜单可能随版本变化。
填入本规则,选择实际策略
规则类型选择 RULE-SET,规则内容填写 science-github,代理策略选择 你的代理组名。此处应从你自己的策略中选择,不能把这几个占位字当作真实组名。
| 规则类型 | RULE-SET |
|---|---|
| 规则内容 | science-github |
| 代理策略 | 你的代理组名 |
| 插入位置 | 添加前置规则,再检查现有例外和规则的先后次序 |

如果你正在维护原生 YAML,等价规则如下。只把这一条加入已有 rules 列表,并放在需要优先于它的例外之后、兜底 MATCH 之前。
rules:
- RULE-SET,science-github,你的代理组名不要在“扩展配置”里直接用这段短 rules 列表覆盖整个原列表。Clash Verge Rev 的配置合并不等于在旧规则前追加;使用“编辑规则”可以保留订阅原有规则。
05 · sing-box:分清规则集和出站
如果你用的是 Mihomo,可以直接跳到下一节验证。sing-box 的字段与 YAML 不同,以下使用 JSON;这里只展示需要合并的片段,不是可以独立启动的完整配置。
- 确认客户端支持编辑原生 sing-box 配置,并备份当前文件。不会开放原生配置的封装客户端,应使用该软件自己的规则功能。
- 把下方集合对象追加到原有
route.rule_set数组,把路由对象加进route.rules中适合的位置。保留其他路由、DNS 处理、入站、出站与默认出口。 - 把
your-proxy-tag替换为outbounds中已存在的出站标签。它不是服务器地址或订阅 URL。 - 选择符合内核版本的下载配置后,保存并使用客户端配置检查功能,再重载连接。
{
"route": {
"rule_set": [
{
"type": "remote",
"tag": "science-github",
"format": "binary",
"url": "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/github.srs",
"update_interval": "1d"
}
],
"rules": [
{
"rule_set": [
"science-github"
],
"action": "route",
"outbound": "your-proxy-tag"
}
]
}
}按 sing-box 版本处理远程下载
1.11–1.13:上面未指定下载出口,使用这一时期内核的默认行为;若需要明确经由已有出口下载,可在该 rule-set 对象里增加 download_detour,其值必须是已定义的出站标签。
支持 http_client 的 1.14 及后续版本:在同一个远程 rule-set 对象里明确添加 HTTP 客户端配置。例如通过已存在的出站获取规则:
"http_client": {
"detour": "你的规则下载出站标签"
}替换标签后与其他字段用逗号分隔。不要给旧版内核添加不认识的 http_client。官方文档标明 download_detour 自 1.14 起弃用、计划在 1.16 移除;按你实际内核版本选用,避免两个写法混用。
下载规则使用的出口与命中规则后的访问出口是两回事。例如广告规则最终执行 reject,但获取广告清单仍需要可用的网络连接。
没有图形配置检查入口时,可对已合并好的完整配置执行:
sing-box check -c config.json如果报格式或版本错误,先恢复备份并查看官方迁移说明。不要把 .mrs 改名成 .srs,两者不是同一种文件格式。
06 · 怎样确认规则真的生效?
能打开网页不等于命中了新规则。请同时检查 请求目标、匹配规则、最终出口 这三项;下面是针对GitHub的检查步骤。
- 打开 github.com 上一个已知仓库,确认网页连接命中 science-github。
- 再打开仓库中一个原始文本文件,检查 raw.githubusercontent.com 等实际请求的匹配和出口。
- 如果还需要 Git 或 IDE 使用同一出口,分别触发一次正常操作并检查连接记录;没有记录说明需要检查流量接管。
读日志时对照这些字段 · 示例,不是你的实时数据
- 请求目标
- github.com
- 期望的规则集
- science-github
- 期望的处理方式
- 按网络情况选择已有策略组
不同软件的日志字段名称可能不同。新规则保存后,请关闭并重新建立测试连接;已有的长连接未必立即切换。规则模式正确、集合成功加载、连接确实进入客户端,是排查的三个起点。
07 · 常见问题与恢复方法
浏览器正常,git clone 仍失败?
先判断 Git 命令是否使用了代理。域名规则只有在流量进入相应客户端后才有机会生效,浏览器与命令行的代理设置可能不同。
包安装慢也一定是 GitHub 规则的问题吗?
不一定。包管理器可能访问自己的仓库或第三方 CDN,应根据实际请求域名判断。
可以把这份规则设成 DIRECT 吗?
可以。如果当前网络直连更合适,把策略改成 DIRECT 即可。集合负责识别目标,并不强制使用代理。
浏览器能走代理,其他软件却没有命中规则?
系统代理只覆盖遵循该设置的程序,部分程序使用自己的代理设置或直接连接。先在客户端日志确认目标程序是否出现;没有记录时检查接管方式与分应用设置。只有客户端明确支持并完成所需配置时才使用 TUN;仅添加规则不能接管原本未进入客户端的流量。
域名规则已命中,为什么仍有部分图片、登录或视频失败?
同一服务往往分别使用页面、账号、图片和媒体域名。先查看失败请求的真实目标与最终出口,再判断是否缺少规则、命中拦截或出口不可用。应用直连 IP、IPv6 或 UDP 的连接也可能走不同路径;按对应软件文档检查,不能只凭首页成功认定全部请求都正常。
更新后提示不认识字段,怎样判断是语法还是版本问题?
记录当前客户端和内核版本,查该版本支持的字段与规则格式。先使用配置检查功能查看具体行号:缩进、逗号等属于文件语法,unknown field 一类提示还可能是功能版本不匹配。恢复备份确认原配置可用后,再按官方迁移说明逐项调整。
提交问题反馈时应该准备什么?
提供客户端与内核版本、设备系统、问题出现步骤,以及脱敏后的目标域名、命中规则、出站名称和错误码。保留一份能正常工作的配置用于对照;不要公开完整订阅地址、账号密钥或包含认证信息的日志。
改完后出问题,按这个顺序恢复
- 先暂停本次新加的路由规则,保留原订阅;重载后重新测试。
- 如果恢复正常,核对新规则的名称、类型、策略与位置,一次只改一项。
- 需要完全撤销时,先删除引用此集合的规则,再删除对应 rule-provider 或 rule-set 定义,避免留下“规则集不存在”的引用。
- 仍无法判断时,导入修改前的备份,并保留不含账号和密钥的错误信息用于排查。
08 · 规则下载与资料来源
需要远程订阅时,复制下方文件地址填到对应字段;手动保存的本地文件不会自动跟随上游更新。
Mihomo · MRS
域名集合,behavior 使用 domain。
打开 MRS 文件https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/github.mrssing-box · SRS
二进制规则集,format 使用 binary。
打开 SRS 文件https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/github.srs- MetaCubeX · 本规则完整文本清单
- MetaCubeX · 规则项目说明
- Mihomo · 规则集合字段 / 路由匹配规则
- Clash Verge Rev · 扩展配置 / 自定义规则与操作截图
- sing-box · rule-set / 路由动作 / HTTP 客户端
图文整理:科学之家。规则填写窗口截图来自 Clash Verge Rev 官方文档并保留来源;编辑入口、分流过程与顺序图为本站绘制的教学示意。上游规则与软件菜单可能变化,请以实际版本和日志为准。