Surge 核心的功能由配置文件(Profile)所控制,当遇到一些特殊需求时,需要通过手动编辑配置文件方可实现,本文总结了 Surge 配置文件系统的一些梳理。
配置文件的内容
配置文件的格式部分沿用了 INI 文件的格式,以 [Section] 进行分段,用于划分不同的段落,对设置内容进行区隔。
每个段落的配置行分别有其特定的语法,如 [General]、[Replica]、[MITM] 段是简单的 key = value 的形式
[General]
key = value
在这几个段里,配置行的先后顺序并无影响。但是在如 [Rule] 等段中,配置行的上下顺序非常重要。
配置文件的分类
配置文件分为三类:
- 普通配置:即手动创建或默认使用的一般配置文件。
- 托管配置:通常由企业管理员或服务商提供。托管配置由于可以被远程更新,所以不可以在本地进行修改。如需要进行修改应先创建副本变为普通配置。
- 企业配置:仅限企业版本,不可修改和查看,也不可建立副本。
配置段分离
为了满足各种使用场景的复杂性,Surge Mac 4.1.0 Beta / Surge iOS Beta 1903 开始支持将配置的一个段分离至另一个文件中。
如:
[Proxy]
#!include Proxy.dconf
其中所引用的另一个文件,必须包含对应段的 [] 声明。因此,该文件既可以是一个只包含部分段的文件(一个或多个),也可以是一个完整的配置。
Proxy.dconf
[Proxy]
ProxyA = http, 1.2.3.4, 80
使用该功能,你可以:
- 引用托管配置的 [Proxy]、[Proxy Group]、[Rule] 段,自行编写其他段。这样既可以享受托管配置的代理相关的内容更新,也不影响通过 UI 调整其他的功能。
- 在多个配置间共享某几个段的内容。比如同时在 iOS 和 macOS 上使用 Surge 时,[Proxy]、[Proxy Group]、[Rule] 等段的内容往往是一样的,但是 [General] 的内容却可能大不相同。可建立 iOS.conf 和 macOS.conf 两个配置,将重复的部分放置于另一个文件中。
[Proxy]
#!include Forwarding.dconf
[Proxy Group]
#!include Forwarding.dconf
[Rule]
#!include Forwarding.dconf
这样,当调整 iOS 上 [General] 段相关内容时,并不会影响 macOS 端,也避免了维护两套代理配置的麻烦。同时完全不妨碍使用 UI 进行配置。
一些补充说明:
- 在通过 UI 修改配置后,会按照 include 的声明将配置写入对应的分离配置段文件。如果该文件包含其他未用到的段落,写入时只会修改涉及的段落。
- 如果引用的是一个托管配置,则和该段相关的配置不可被编辑,但是不影响其他段的调整。
- 为了配合该功能的使用,Surge Mac 新版中将对所有已安装的托管配置定期检查更新,旧版本中仅对当前使用中的配置检查更新。
- 文件名的后缀并没有要求,如果是一个完整配置可继续使用 conf 后缀,如果并非一个完整配置建议使用其他后缀,以避免被显示在配置列表中。
模块
配置段分离功能用于将单个配置文件拆分为多个文件,而模块则是对配置文件的补丁,每个模块文件用于对配置文件的各个部分进行微调,以实现某个特定的任务。
模块可以:
- 灵活的开启与关闭。
- 在同一个文件内对多个段进行调整。
- 可通过 URL 进行安装并保持更新。
但是
- 模块不可以调整 [Proxy]、[Proxy Group]、[Rule] 段内容。
- 模块不可以调整 MITM 的 CA 证书。
- 模块的设置覆盖于主配置之上,因此不可以通过 UI 进行调整。
模块的说明详见:https://community.nssurge.com/d/225-module