模块
Chute 支持外部模块文件(.sgmodule),用于通过可复用、可分享的规则、脚本、MITM 主机和 DNS 映射来扩展配置。模块遵循 Surge 模块格式。
模块在 [Module] 部分中定义:
[Module]
https://example.com/my-module.sgmodule
/path/to/local-module.sgmodule
~/.chute/custom-module.sgmodule
URL 将被远程获取;以 / 或 ~ 开头的路径从本地文件系统加载。
模块文件结构
.sgmodule 文件遵循与主配置文件相同的语法。支持的部分:
| 部分 | 用途 |
|---|---|
[MITM] |
将主机名添加到 MITM 解密列表 |
[Script] |
注册 JavaScript 脚本 |
[URL Rewrite] |
添加 URL 重写规则 |
[Header Rewrite] |
添加请求头重写规则 |
[Rule] |
添加路由规则 |
[Host] |
添加 DNS 主机到 IP 的映射 |
模块元数据
模块可以包含元数据指令(以 #! 开头的行):
#!name = My Custom Module
#!desc = Blocks ads and trackers for example.com
#!system = ios,macos
| 指令 | 描述 |
|---|---|
#!name |
模块名称(在 UI 中显示) |
#!desc |
模块描述 |
#!system |
平台过滤:ios、macos(逗号分隔) |
如果指定了 #!system 且当前平台不匹配,该模块将被静默跳过。
模块示例
#!name = Ad Block Module
#!desc = Block common ad domains
#!system = ios,macos
[Rule]
DOMAIN-SUFFIX,doubleclick.net,REJECT
DOMAIN-SUFFIX,googlesyndication.com,REJECT
DOMAIN-SUFFIX,googleadservices.com,REJECT
[Host]
localhost = 127.0.0.1
[MITM]
hostname = *.google-analytics.com
[URL Rewrite]
^https://example\.com/old-api https://example.com/new-api 302
模块生命周期
- 模块在主配置解析完成后加载。
- 来自模块的规则、脚本、MITM 主机和 DNS 主机将被添加到运行时管理器中。
- 当模块被移除或禁用时,其所有规则、脚本和主机都将被取消注册。
- 远程模块根据主配置的托管配置更新间隔重新获取。