Surge 配置指南:从零开始设置你的网络环境
在当今高度互联的世界中,网络已经成为我们生活和工作中不可或缺的一部分。无论是为了访问特定资源、提高网络速度、保护隐私安全,还是进行网络调试,一款强大的网络工具都显得至关重要。Surge,作为 Apple 平台(macOS 和 iOS)上备受推崇的网络工具,以其强大的功能、高度的灵活性和精细的控制能力,赢得了众多高级用户的青睐。它不仅仅是一个简单的代理客户端,更是一个集网络请求抓取、规则分流、DNS 管理、脚本扩展于一体的综合性网络环境解决方案。
然而,对于初次接触 Surge 的用户来说,其复杂的配置选项和专业术语可能会让人望而却步。本指南旨在为你提供一份详尽的、从零开始的 Surge 配置教程,帮助你理解其核心概念,掌握基本配置方法,并最终能够根据自己的需求定制化网络环境。
一、 认识 Surge:它是什么,能做什么?
在深入配置之前,我们首先需要理解 Surge 的本质。简单来说,Surge 在你的设备上创建了一个本地的代理服务器(或虚拟网卡),接管了设备上几乎所有的网络流量(HTTP/HTTPS/TCP)。然后,它会根据你预设的配置文件 (Configuration) 中的规则,智能地决定每一条网络连接应该如何处理:
- 代理转发 (Proxy): 将流量通过你指定的远程代理服务器(如 Shadowsocks, Vmess, Trojan, Snell, HTTP/SOCKS5 等)进行转发,常用于访问受限网络资源或隐藏真实 IP。
- 直接连接 (Direct): 让流量不经过任何代理,直接连接目标服务器,适用于访问国内服务或无需代理的网站,以获得最佳速度和兼容性。
- 拒绝连接 (Reject): 阻止特定的网络请求,常用于屏蔽广告、追踪器或恶意网站。
除了基本的流量分流,Surge 还具备以下高级功能:
- 网络请求查看与分析 (Sniffing): 实时查看设备发出的网络请求详情(URL、Header、Body 等),是开发者调试 API 或分析应用行为的利器。
- HTTPS 解密 (MITM – Man-in-the-Middle): 通过安装 Surge 的 CA 证书,可以解密 HTTPS 流量,查看加密内容(请务必注意安全风险和隐私问题)。
- 灵活的策略组 (Policy Group): 将多个代理服务器组合起来,实现手动选择、自动测速选择最优节点、故障自动切换 (Fallback) 等高级路由策略。
- DNS 控制: 支持自定义 DNS 服务器,包括 DoH (DNS over HTTPS), DoQ (DNS over QUIC),防止 DNS 污染,提升解析速度和安全性。
- 脚本支持 (Scripting): 通过 JavaScript 脚本扩展 Surge 的功能,实现更复杂的流量处理逻辑、定时任务、通知等。
- 模块化配置 (Module): 将常用的配置片段(如广告屏蔽规则、特定应用规则)做成模块,方便复用和管理。
二、 准备工作:开始配置前你需要什么?
- Surge 应用程序: 你需要从 App Store 购买并下载 Surge for macOS 或 Surge for iOS。它们是独立购买的。
- 代理服务信息 (如果需要): 如果你的主要目的是使用代理访问网络,你需要拥有至少一个可用的代理服务器订阅或节点信息。这通常由机场服务商提供,或者你也可以自建代理服务器。这些信息通常包含服务器地址、端口、密码/UUID、加密方式等。服务商通常会提供一个配置链接 (URL) 或者二维码。
- 基础网络知识 (可选但推荐): 了解一些基础概念,如 IP 地址、域名、DNS、HTTP/HTTPS、TCP/UDP 等,将有助于你更好地理解 Surge 的配置和工作原理。
三、 核心概念:理解 Surge 配置文件的结构
Surge 的所有行为都由一个文本格式的配置文件驱动。这个文件是 Surge 的大脑和灵魂。虽然可以通过图形界面进行一些基本操作,但深入定制和理解 Surge 的运作,必须掌握配置文件的结构和语法。
一个典型的 Surge 配置文件主要由以下几个部分(段落)组成,以 [Section Name]
标记:
-
[General]
(通用设置): 定义 Surge 的全局行为。loglevel
: 日志记录级别 (如notify
,info
,verbose
,error
)。排错时可设为verbose
。dns-server
: 指定 DNS 服务器,可以设置多个,用逗号分隔。支持 DoH/DoQ。例如:1.1.1.1, 8.8.8.8, system
(system 表示使用系统 DNS)。skip-proxy
: 指定哪些域名或 IP 段永远直接连接,不经过代理判断。external-controller-access
: 允许其他设备通过指定 IP 和端口控制 Surge (需要密码)。http-listen
,socks5-listen
: 设置 Surge 作为标准 HTTP/SOCKS5 代理的监听地址和端口。mitm
: MITM (HTTPS 解密) 相关设置,包括需要解密的主机名。- … 还有很多其他参数,用于控制 WiFi 助理、IPv6、测试超时等。
-
[Proxy]
(代理服务器列表): 定义所有可用的远程代理服务器节点。- 每一行定义一个代理服务器。
- 格式通常是:
节点名称 = 代理类型, 服务器地址, 端口, [参数...]
- 示例:
MyServer-SS = shadowsocks, server.example.com, 8888, encrypt-method=aes-256-gcm, password=your_password
MyServer-Vmess = vmess, vmess.example.com, 443, username=your_uuid, ws=true, ws-path=/ws, tls=true, skip-cert-verify=true
MyServer-Trojan = trojan, trojan.example.com, 443, password=your_password, sni=trojan.example.com
MyServer-HTTP = http, http-proxy.example.com, 8080, username=user, password=pass - 这里的
节点名称
是你为这个服务器起的名字,将在后续的策略组中使用。
-
[Proxy Group]
(策略组): 这是 Surge 规则路由的核心,用于组织和管理[Proxy]
中定义的节点,并实现不同的负载策略。- 每一行定义一个策略组。
- 格式:
策略组名称 = 策略类型, [节点/策略组名称列表], [参数...]
- 常见的策略类型:
select
: 手动选择组。你可以在 Surge 界面上手动选择使用哪个节点或策略组。url-test
: 自动测试组。Surge 会定期测试组内节点的延迟,并自动选择延迟最低的可用节点。可以设置url
(测试用的网址),interval
(测试间隔),tolerance
(延迟容差)。fallback
: 故障转移组。按照列表顺序使用节点,只有当排在前面的节点不可用时,才会切换到下一个。可以设置url
(健康检查网址),interval
。load-balance
: 负载均衡组 (较少用于普通代理场景)。
- 策略组可以嵌套,即一个策略组的成员可以是另一个策略组。
DIRECT
和REJECT
也是特殊的 “节点”,可以加入策略组。-
示例:
“`
# 手动选择组,包含两个 SS 节点和直连选项
Manual-Selection = select, MyServer-SS, MyServer-Vmess, DIRECT自动测速组,包含多个节点,自动选延迟最低的
Auto-Fastest = url-test, MyServer-SS, MyServer-Vmess, MyServer-Trojan, url=http://www.gstatic.com/generate_204, interval=300
故障转移组,优先使用 Auto-Fastest,如果不行则手动选择
Main-Policy = fallback, Auto-Fastest, Manual-Selection, url=http://www.gstatic.com/generate_204, interval=60
最终代理策略,通常包含 Main-Policy 和 DIRECT
Proxy = select, Main-Policy, DIRECT
``
Proxy
* 注意:策略组的命名通常有约定俗成的习惯,如,
Global,
Streaming,
Domestic` 等,但这并非强制。
-
[Rule]
(规则列表): 这是 Surge 决定流量走向的规则引擎。Surge 会按照规则从上到下依次匹配当前的网络请求,一旦匹配成功,则执行对应的策略(如PROXY
,DIRECT
,REJECT
),后续规则不再检查。- 每一行定义一条规则。
- 格式:
规则类型, 匹配内容, 策略, [参数...]
- 常见的规则类型:
DOMAIN-SUFFIX
: 域名后缀匹配。如DOMAIN-SUFFIX, google.com, Proxy
匹配所有以.google.com
结尾的域名。DOMAIN-KEYWORD
: 域名关键字匹配。如DOMAIN-KEYWORD, google, Proxy
匹配域名中包含google
的请求。DOMAIN
: 精确域名匹配。如DOMAIN, www.apple.com, DIRECT
只匹配www.apple.com
。IP-CIDR
: IP 地址段匹配。如IP-CIDR, 192.168.0.0/16, DIRECT
匹配所有局域网 IP。GEOIP
: 基于 IP 的地理位置匹配。如GEOIP, CN, DIRECT
匹配判定为中国的 IP 地址。需要下载 GeoIP 数据库。PROCESS-NAME
: (macOS) 基于发起请求的进程名称匹配。如PROCESS-NAME, Mail, DIRECT
。URL-REGEX
: 基于 URL 的正则表达式匹配。如URL-REGEX, ^https?:\/\/api\.example\.com, Proxy
。USER-AGENT
: 基于 User Agent 匹配。如USER-AGENT, %ED%B5%8B%E8%AF%95*
(测试*)FINAL
: 最终规则。当前面所有规则都未匹配时,执行此规则。通常是FINAL, Proxy
或FINAL, DIRECT
。
- 策略部分通常是
[Proxy Group]
中定义的策略组名称,或者是DIRECT
或REJECT
。 -
示例:
“`
# 广告屏蔽规则 (通常引用外部规则集)
# RULE-SET, https://raw.githubusercontent.com/DivineEngine/Surge/master/Ruleset/Advertising.list, REJECT常用国内网站直连
DOMAIN-SUFFIX, cn, DIRECT
DOMAIN-SUFFIX, baidu.com, DIRECT
DOMAIN-SUFFIX, weibo.com, DIRECT
GEOIP, CN, DIRECT # 国内 IP 直连流媒体策略 (假设有个名为 Streaming 的策略组)
DOMAIN-SUFFIX, netflix.com, Streaming
DOMAIN-SUFFIX, disneyplus.com, Streaming局域网直连
IP-CIDR, 192.168.0.0/16, DIRECT
IP-CIDR, 10.0.0.0/8, DIRECT
IP-CIDR, 172.16.0.0/12, DIRECT
IP-CIDR, 127.0.0.1/32, DIRECT
DOMAIN-SUFFIX, local, DIRECT # 匹配 .local 结尾的域名其他所有未匹配流量走 Proxy 策略组
FINAL, Proxy
``
FINAL, Proxy
* **规则顺序至关重要!** 例如,如果你把放在
GEOIP, CN, DIRECT前面,那么所有流量(包括国内流量)都会先被
FINAL` 规则匹配到而走代理。
-
[Host]
(本地 DNS 映射): 类似于系统的 hosts 文件,可以为特定域名指定 IP 地址。- 格式:
hostname = ip_address
或hostname = server:another_hostname
(DNS CNAME 效果) - 示例:
localhost = 127.0.0.1
- 格式:
-
[URL Rewrite]
(URL 重写): 修改网络请求的 URL。用于去广告、重定向等高级场景。 [Header Rewrite]
(头部重写): 修改 HTTP 请求或响应的头部信息。[MITM]
(中间人攻击): 配置 HTTPS 解密。hostname = %INSERT%
或hostname = domain1.com, domain2.com, -excluded.com
指定需要解密的主机名。%INSERT%
表示由规则中的force-http-engine-hosts
参数动态决定。- 需要先生成并信任 Surge CA 证书。
[Script]
(脚本): 定义脚本及其触发方式(如http-request
,http-response
,cron
定时任务)。
四、 获取和导入配置文件
对于初学者,最快捷的方式通常是使用由代理服务商提供的配置文件链接。
-
通过 URL 导入 (推荐初学者):
- 获取你的服务商提供的 Surge 配置订阅链接 (通常以
.conf
结尾)。 - iOS: 打开 Surge -> 首页 -> 从 URL 下载配置 -> 粘贴链接 -> 下载。
- macOS: 打开 Surge -> 菜单栏 -> 文件 (File) -> 从 URL 下载配置文件 (Download Profile from URL) -> 粘贴链接 -> 下载。
- 下载后,Surge 会提示你将此配置设为当前配置。
- 这种方式的好处是,服务商更新节点信息后,你可以在 Surge 中方便地更新配置。
- 获取你的服务商提供的 Surge 配置订阅链接 (通常以
-
手动创建或编辑:
- 你可以基于模板或者他人的配置进行修改,或者完全从头编写。
- iOS: 可以通过 Surge 内置编辑器、iCloud Drive 或其他文件管理应用编辑
.conf
文件,然后从文件导入。 - macOS: 可以使用任何文本编辑器 (如 VS Code, Sublime Text, 甚至自带的文本编辑.app) 编辑
.conf
文件,然后通过 Surge 菜单栏 -> 文件 -> 从本地导入配置文件… 来加载。
五、 启动 Surge 并开始使用
-
选择配置: 确保你想要使用的配置文件已被选中为“当前配置”。
- iOS: 在“首页”顶部可以看到当前配置名称,点击可切换。
- macOS: 在 Surge 菜单栏图标下拉菜单中,”切换配置 (Switch Profile)” 下选择。
-
启动 Surge:
- iOS: 在“首页”点击顶部的开关按钮,使其变为绿色。首次启动会请求 VPN 配置权限,请允许。
- macOS: 点击 Surge 菜单栏图标,选择 “设为系统代理 (Set as System Proxy)”。图标会变亮,表示 Surge 正在工作。
-
选择策略 (如果配置了
select
类型的策略组):- iOS: 在“策略组”标签页,找到你定义的
select
组 (如Proxy
,Manual-Selection
),点击进入,然后选择你想要使用的节点或子策略组。 - macOS: 点击 Surge 菜单栏图标,会列出所有
select
类型的顶级策略组,展开后即可选择节点。
- iOS: 在“策略组”标签页,找到你定义的
-
测试网络: 打开浏览器,尝试访问一些网站,如
google.com
(如果需要代理才能访问) 和baidu.com
(通常应直连)。检查是否按预期工作。
六、 监控与调试
- 仪表盘 (Dashboard):
- iOS: “仪表盘”标签页。
- macOS: Surge 菜单栏 -> 显示 Surge 仪表盘 (Show Surge Dashboard)。
- 这里可以看到实时速率、总流量、活动连接、DNS 缓存等信息。
- 最近请求 (Recent Requests):
- iOS: “请求”标签页。
- macOS: Surge 仪表盘 -> 左侧“最近请求”。
- 这里列出了通过 Surge 的网络请求记录。你可以看到每个请求的 URL、使用的策略、命中的规则、耗时等。这是排查问题的关键工具。如果某个网站打不开,可以在这里查看它的请求是被
REJECT
了,还是走了错误的PROXY
或DIRECT
。
- 日志 (Log):
- iOS: “更多” -> 日志。
- macOS: Surge 菜单栏 -> 显示日志控制器 (Show Log Controller)。
- 日志提供了更详细的内部运行信息,包括错误信息。调整
[General]
中的loglevel
可以改变日志的详细程度。
七、 HTTPS 解密 (MITM) 的配置与使用
MITM 功能强大但也涉及安全风险,请谨慎使用。
- 生成 CA 证书:
- iOS: “首页” -> 点击当前配置进入编辑 -> 滚动到底部 -> MITM -> 点击“生成新的 CA 证书”。
- macOS: Surge 菜单栏 -> 配置 (Configure) -> 生成新的 CA 证书 (Generate New CA Certificate)。
- 安装并信任 CA 证书:
- 生成后,点击“安装证书”或“配置证书”。
- iOS: 会跳转到 Safari 下载描述文件,下载后去系统 设置 -> 通用 -> VPN 与设备管理 -> 已下载的描述文件 -> 安装。安装后,还需要去 设置 -> 通用 -> 关于本机 -> 证书信任设置 -> 找到 Surge 开头的证书,打开信任开关。
- macOS: 会自动打开“钥匙串访问 (Keychain Access)”。找到 Surge 开头的证书,双击 -> 展开“信任” -> “使用此证书时”选择“始终信任”。
- 配置 MITM 主机名:
- 在配置文件的
[MITM]
段落下,使用hostname = ...
指定需要解密的主机名。例如hostname = api.example.com, *.applevideo.com
。使用%INSERT%
配合规则中的force-http-engine-hosts
参数是更灵活的方式。
- 在配置文件的
- 启用 MITM:
- 在
[General]
段落中,确保mitm = enable
(或类似设置,具体看 Surge 版本) 处于开启状态。 - iOS: 在 Surge 首页,确保 MITM 开关是打开的。
- macOS: 在 Surge 菜单栏,确保 “HTTPS 解密 (MITM)” 选项是勾选的。
- 在
- 验证: 启用后,访问你配置的 HTTPS 网站,在“最近请求”中应该能看到解密后的 HTTP 内容(如果请求本身是文本)。
八、 进阶话题与资源
- 规则集 (Rule Set): 将大量同类规则(如广告屏蔽、国内网站列表)放在外部文件或 URL 中引用,使主配置文件更简洁。使用
RULE-SET
规则类型。 - 模块 (Module): 将一部分配置 (如 MITM 设置、特定应用规则、脚本) 做成独立的
.sgmodule
文件,通过[General]
中的include
参数或图形界面加载,方便管理和分享。 - 脚本 (Scripting): 使用 JavaScript 编写脚本,实现签到、修改请求/响应体、自定义通知等复杂功能。需要一定的编程基础。
- 外部资源: GitHub 等社区有大量用户分享的 Surge 规则集、模块和脚本,善用搜索可以找到满足特定需求的资源。
九、 常见问题与排错思路
- 无法上网:
- 检查 Surge 是否已启动 (开关是否打开/菜单栏图标是否点亮)。
- 检查配置文件语法是否正确 (可在 Surge 内进行语法检查)。
- 检查
[Proxy]
中的节点信息是否正确、是否可用 (可在策略组中手动测试延迟)。 - 检查
[Rule]
中的FINAL
规则是否设置正确,是否不小心将所有流量REJECT
或走了不可用的DIRECT
。 - 查看“最近请求”和“日志”,分析是 DNS 解析问题、连接超时还是被拒绝。
- 特定网站/App 无法访问:
- 在“最近请求”中找到该网站/App 的请求记录。
- 查看它命中了哪条规则,走了哪个策略。
- 如果是走了
PROXY
,尝试切换到其他可用节点或DIRECT
。 - 如果是走了
DIRECT
,尝试为其添加一条规则强制走PROXY
。 - 如果是被
REJECT
,检查是否有过于宽泛的屏蔽规则命中了它。 - 检查是否开启了 MITM,某些 App 有证书校验,可能导致开启 MITM 后无法联网。尝试关闭 MITM 或在该 App 的规则中加入
skip-analysis
参数。
- 速度慢:
- 如果是代理速度慢,使用
url-test
策略组自动选择延迟最低的节点,或手动切换到其他节点。 - 检查是否有不必要的请求走了代理 (如国内网站),优化
[Rule]
配置。 - 检查设备本身的网络环境。
- 如果是代理速度慢,使用
- 配置文件更新后无效:
- 确保修改的是当前正在使用的配置文件。
- 修改后需要重新加载配置 (Reload Configuration)。
- macOS: Surge 菜单栏 -> 配置 -> 重新加载配置 (Reload Configuration)。
- iOS: 编辑配置后保存即可自动应用,或在“首页”下拉刷新。
十、 结语
Surge 是一款功能极其强大的网络工具,初次接触可能会觉得复杂,但只要理解了其基于配置文件的核心工作流,掌握了 [General]
, [Proxy]
, [Proxy Group]
, [Rule]
这几个关键部分的作用和关系,你就能够逐步构建起符合自己需求的网络环境。
本指南旨在为你铺平入门之路,但 Surge 的潜力远不止于此。不断实践、尝试不同的配置组合、探索脚本和模块的世界,你将发现 Surge 能为你带来前所未有的网络控制力和可能性。从今天起,开始打造属于你的、更高效、更自由、更安全的网络空间吧!