Module(模块)是一系列设置的集合,可用于覆盖当前配置的部分设定,有非常多的使用场景:
- 微调不可编辑的配置的设定,如托管配置和企业配置。
- 快捷的在不同工作环境中切换,比如临时开启对所有域名的 MitM 并调整过滤器。
- 使用他人编写的模块以完成某些特定任务,比如,你的同事可以编写一个模块将应用的 API 请求重定向至测试服务器。
- 如果你在多个设备间使用了同一份配置,有可能需要根据设备的使用场景进行微调。模块的开启状态是保存于当前设备的,可以用于在不同设备间的差异性修改。
基本概念
模块相当于给当前配置进行 Patch,其优先级高于配置本身的设置。有三种模块:
- 内置模块:Surge 会预置一些模块,随着 Surge 自身更新。
- 本地模块:放置在配置文件目录的 .sgmodule 文件
- 安装的模块:从某个 URL 安装的模块
- 点击「模块卡片」下方的「模块」按钮,点击「安装新模块...」按钮,粘贴以你需要的模块「*.sgmodule 文件的 GitHub raw 链接*」,确认安装后确保刚刚安装的模块左侧有对勾代表模块已经启用,点击右上角「完成」确认即可。
你可以同时开启多个模块,模块的开启状态保存于当前设备,不会进行同步。切换配置也不影响模块的开启状态。
编写模块
模块的内容和标准配置基本一致,目前支持调整以下段:
- General,Replica有三种写法
- key = value:直接覆盖原始值
- key =
%APPEND%
value:在原始值的末尾进行追加(仅适用于适用逗号分隔的字段)
- key =
%INSERT%
value:在原始值的开始进行插入(仅适用于适用逗号分隔的字段)
- MITM仅支持操作 hostname 字段,同样支持上述三种写法。
- Script,URL Rewrite,Header Rewrite,Host新加入的定义将会追加在原始内容的顶部。
- Rule
- 新配置的规则将被插入在最顶部
- 规则只可以使用
DIRECT
、REJECT
、REJECT-TINYGIF
三个策略
同时,模块支持配置 name,desc 和 system 描述,请参照最后的样例。(system 描述的可取值为 ios 和 mac,用于限制模块的使用范围)