掌握 Surge:入门级用户指南(iOS/macOS)
欢迎来到 Surge 的世界!如果你正在寻找一款强大、灵活的网络工具来管理你的设备流量,那么你很可能已经听说过 Surge。它不仅仅是一个简单的代理客户端,更是一个集网络代理、流量监控、规则过滤、抓包调试等多种功能于一身的瑞士军刀。
对于新手来说,Surge 复杂的界面和大量的配置选项可能会让人望而却步。但请放心,通过本篇详细的入门指南,你将逐步了解 Surge 的核心概念、基本操作和常见应用场景,从而能够自信地驾驭这款强大的工具。
本文将涵盖 Surge 在 iOS 和 macOS 上的入门级使用,包括安装、基本设置、核心概念(如规则、代理组、配置)以及一些常见的应用示例。无论你是想科学上网、屏蔽广告、优化网络性能还是进行简单的网络调试,Surge 都能满足你的需求。
免责声明: Surge 是一款付费软件,需要通过官方渠道购买授权。使用代理服务需要遵守当地法律法规。本文仅为技术交流和学习目的,不提供任何非法用途的指引。
第一部分:初识 Surge – 它是做什么的?
在深入细节之前,我们先来理解 Surge 的核心功能:
- 网络代理 (Proxy): 这是 Surge 最基本也是最重要的功能。它允许你的设备通过一个或多个指定的服务器来转发网络请求。这可以帮助你访问地理限制的内容、保护你的隐私等。
- 流量管理与过滤 (Rule-based Routing): Surge 最强大的地方在于其基于规则的流量管理。你可以设置精细的规则,决定哪些流量走代理、哪些流量直连(不走代理)、哪些流量应该被阻止(如广告)。
- 网络调试与监控 (Debugging & Monitoring): Surge 可以详细记录和显示设备的所有网络请求和响应。这对于开发者分析应用网络行为、用户诊断网络问题非常有帮助。
- 内容修改 (Content Modification): 通过脚本功能,Surge 甚至可以修改网络请求和响应的内容,实现更高级的功能(这通常是进阶用途,入门阶段只需了解即可)。
- 模块 (Modules): Surge 提供了模块功能,可以将特定的规则或设置打包,方便用户快速启用或禁用某些功能,如广告屏蔽、强制 HTTPS 等。
简单来说,Surge 就是你设备的网络守门员和交通指挥官,它能按照你设定的规则,决定每一个网络连接的走向和处理方式。
第二部分:获取与安装 Surge
Surge 是一个跨平台的付费应用,支持 iOS 和 macOS。购买授权通常是绑定到你的 Surge 账号,可以在授权设备数量范围内使用。
- 购买授权: 访问 Surge 官方网站 (NSSurge.com) 或通过其他官方授权渠道购买。购买后会获得一个授权文件或授权码。
- 下载应用:
- **iOS: ** 在 App Store 中搜索 “Surge”,找到 Surge 4 或最新版本(通常是同一个 App Store Listing,名字是 Surge 5 或更新)。下载并安装。
- **macOS: ** 访问 Surge 官方网站 (NSSurge.com),下载 macOS 版本安装包。macOS 版本通常不通过 Mac App Store 分发。
- 激活授权:
- **iOS: ** 打开 Surge 应用,按照提示导入或输入你的授权信息进行激活。
- **macOS: ** 打开下载的
.dmg
文件,将 Surge 应用程序拖拽到 “Applications” 文件夹。打开 Surge,首次运行时会提示输入授权信息进行激活。
安装完成后,Surge 会请求相应的系统权限,比如在 iOS 上创建 VPN 配置,在 macOS 上安装帮助程序(Helper Tool)。请允许这些权限,这是 Surge 正常工作所必需的。Surge 的 VPN 配置是本地的,流量并不会发送到第三方 VPN 服务器,而是经过 Surge 应用进行处理。
第三部分:Surge 的基础界面与操作
安装并激活 Surge 后,打开应用,你会看到一个简洁而功能丰富的界面。虽然 iOS 和 macOS 的界面布局略有不同,但核心概念和操作逻辑是一致的。
iOS 界面概览:
- 顶部开关: 用于启动或停止 Surge 的 VPN 服务。
- 首页 (Home/Dashboard): 显示当前的连接状态、流量统计、使用的配置等信息。
- 配置 (Config): 进入配置编辑界面,这是 Surge 最核心的部分。
- 策略组 (Policy Groups): 查看和切换代理策略组的状态。
- 模块 (Modules): 管理已启用的模块。
- 更多 (More): 包含日志、流量统计、设置、工具等。
macOS 界面概览:
- Surge 主要运行在菜单栏(Menu Bar)。点击菜单栏的 Surge 图标可以快速进行操作。
- Proxy Policy/Global Policy: 快速切换全局代理模式或策略组。
- Toggle Surge: 开启/关闭 Surge。
- Configuration: 打开配置文件编辑器。
- Proxy/Group Status: 查看代理和策略组状态。
- Activity: 查看实时连接活动。
- Log: 查看详细日志。
- Modules: 管理模块。
- Settings: 应用设置。
- 主窗口: 可以通过菜单栏图标或 Dock 图标打开 Surge 的主窗口,提供更详细的状态、活动和配置管理界面。
启动/停止 Surge:
要让 Surge 开始接管你的设备网络流量,你需要在应用内点击启动开关(iOS)或在菜单栏选择 “Toggle Surge”(macOS)。启动后,iOS 状态栏会出现 VPN 图标,macOS 菜单栏的 Surge 图标会变亮或显示连接状态。
代理模式:
Surge 有几种基本的代理模式,你需要在配置中选择一种作为默认或回退模式:
- 全局代理 (Global Proxy): 所有网络流量都通过你指定的代理服务器转发。这通常用于测试或访问所有内容都需要代理的场景。
- 规则代理 (Rule-based Proxy): 这是 Surge 最常用和推荐的模式。Surge 会根据你在配置文件中设定的规则来判断每个连接是走代理、直连还是被阻止。
- 直连 (Direct): 所有网络流量都直接连接,不经过任何代理。这相当于关闭了代理功能,但 Surge 仍然可以进行规则过滤和流量监控。
对于入门用户,我们强烈建议使用规则代理模式,因为它可以实现更灵活和智能的流量管理。
第四部分:Surge 的核心 – 配置文件
Surge 的所有高级功能都依赖于一份配置文件 (.conf 文件)。这份文件是纯文本格式,包含了 Surge 如何处理流量的所有指令。理解配置文件的结构和语法是掌握 Surge 的关键。
你可以通过 iOS 应用的 “配置” 选项卡或 macOS 应用的 “Configuration” 菜单来访问和编辑配置文件。Surge 内置了一个文本编辑器,你也可以将配置文件导出到其他文本编辑器进行编辑。
配置文件的基本结构:
一个典型的 Surge 配置文件包含多个 sections(节),每个 section 用方括号 []
包围。常见的 sections 包括:
[General]
: 通用设置,如日志级别、是否跳过 HTTPS 证书验证等。[Proxy]
: 定义你可以使用的代理服务器列表。[Proxy Group]
: 定义代理策略组,用于实现自动测速、负载均衡、手动切换等。[Rule]
: 定义流量处理规则,告诉 Surge 如何处理特定的网络请求。[Host]
: 定义自定义的 DNS 映射。[URL Rewrite]
: 定义 URL 重写规则(进阶功能)。[Header Rewrite]
: 定义 HTTP 请求头重写规则(进阶功能)。[Script]
: 定义脚本(进阶功能)。[MITM]
: 定义 MITM 配置(用于抓取 HTTPS 流量)。
创建或导入配置文件:
- 使用默认配置: Surge 安装后会有一个基本的默认配置文件,你可以基于它进行修改。
- 导入远程配置: 许多用户或服务提供商会分享 Surge 配置文件 URL。你可以通过 Surge 的导入功能,输入 URL 下载并使用这些配置。这是一个快速上手的方法,但了解配置内容仍很重要。
- 从文件导入/导出: 你可以将本地的
.conf
文件导入 Surge,也可以将当前的配置导出备份。
编辑配置文件:
在 Surge 内置编辑器中,你可以直接修改文本内容。修改完成后,记得保存配置并应用(通常 Surge 会自动提示你应用新配置)。
第五部分:核心概念详解 – 规则与策略
理解 [Rule]
和 [Proxy Group]
这两个 sections 是玩转 Surge 的核心。
5.1 定义代理服务器 – [Proxy]
Section
在 [Proxy]
section 中,你需要定义你将使用的所有代理服务器。每行定义一个代理,格式如下:
ProxyName = ProxyType, param1, param2, ...
ProxyName
: 你给这个代理起的名字,后续在规则和策略组中会引用这个名字。ProxyType
: 代理类型,Surge 支持多种类型,常见的包括:http
: HTTP 代理https
: HTTPS 代理socks5
: SOCKS5 代理snell
: Surge 自研协议shadowsocks
: Shadowsocks 协议shadowsocksr
: ShadowsocksR 协议vmess
: V2Ray/Vmess 协议vless
: VLESS 协议trojan
: Trojan 协议tuic
: TUIC 协议hysteria
: Hysteria 协议
param1, param2, ...
: 不同代理类型所需的参数,通常包括服务器地址 (server)、端口 (port)、加密方式 (encrypt)、密码 (password)、UUID (uuid)、伪装类型 (network/type) 等。具体参数格式请参考 Surge 官方文档。
示例:
ini
[Proxy]
MyAwesomeProxy = ss, example.com, 8888, encrypt=aes-256-cfb, password=mypass
AnotherProxy = vmess, 1.2.3.4, 443, username=myuuid, tls=true, ws=true, ws-path=/mypath, ws-headers=Host:example.com
DirectConnection = direct # 这是 Surge 内建的直连策略,通常不需要在此定义,但在规则中会使用
RejectTraffic = reject # 这是 Surge 内建的拒绝策略,通常不需要在此定义,但在规则中会使用
5.2 定义策略组 – [Proxy Group]
Section
[Proxy Group]
section 允许你将多个代理或策略组合在一起,形成一个策略组。规则可以直接引用单个代理,也可以引用一个策略组。使用策略组可以实现更智能的代理选择逻辑。
策略组的格式:
GroupName = GroupType, Policy1, Policy2, ..., PolicyN, policy-option=value
GroupName
: 你给策略组起的名字。GroupType
: 策略组的类型,决定了如何从Policy1
到PolicyN
中选择一个策略:select
: 手动选择。Surge 会在界面上显示一个列表,让你手动选择使用哪个策略。url-test
: URL 测试。Surge 会定期测试列表中的所有策略,选择延迟最低(或速度最快)的一个。fallback
: 故障转移。Surge 会按顺序尝试列表中的策略,使用第一个可用的策略。load-balance
: 负载均衡(通常用于 HTTP/SOCKS5 等代理,对 SS/Vmess 等不适用)。
Policy1, Policy2, ..., PolicyN
: 包含在这个策略组中的代理名称或其他的策略组名称。policy-option
: 策略组的额外选项,如url
(url-test 的测试地址),interval
(url-test 的测试间隔) 等。
示例:
ini
[Proxy Group]
Auto Select = url-test, MyAwesomeProxy, AnotherProxy, interval=600, url=http://www.gstatic.com/generate_204
Manual Switch = select, MyAwesomeProxy, AnotherProxy, DirectConnection, RejectTraffic
Streaming Proxy = fallback, AnotherProxy, MyAwesomeProxy
上面的例子中:
* Auto Select
是一个自动测速组,包含了 MyAwesomeProxy
和 AnotherProxy
,Surge 每 600 秒测试一次 http://www.gstatic.com/generate_204
,选择延迟最低的。
* Manual Switch
是一个手动选择组,你可以自由切换使用 MyAwesomeProxy
, AnotherProxy
, DirectConnection
或 RejectTraffic
。
* Streaming Proxy
是一个故障转移组,优先使用 AnotherProxy
,如果不可用则使用 MyAwesomeProxy
。
5.3 定义流量处理规则 – [Rule]
Section
这是 Surge 配置中最核心的部分。[Rule]
section 定义了如何根据连接的特性来匹配并应用相应的策略(代理、直连或拒绝)。
规则的匹配顺序非常重要:Surge 会从上到下依次检查规则列表,一旦匹配到一条规则,就会立即执行该规则指定的策略,并停止检查后续规则。因此,更具体、更精确的规则应该放在前面,而更宽泛、兜底的规则放在后面。
规则的基本格式:
RuleType, MatchValue, PolicyName, [policy-option=value]
-
RuleType
: 规则类型,指定了如何匹配流量:DOMAIN
: 匹配完整的域名,例如DOMAIN,example.com,PolicyName
。DOMAIN-SUFFIX
: 匹配域名后缀,例如DOMAIN-SUFFIX,google.com,PolicyName
会匹配所有.google.com
结尾的域名(包括google.com
本身)。DOMAIN-KEYWORD
: 匹配域名中包含的关键词,例如DOMAIN-KEYWORD,google,PolicyName
会匹配域名中包含 “google” 的连接。IP-CIDR
: 匹配 IP 地址或 IP 地址段(CIDR 格式),例如IP-CIDR,192.168.1.0/24,PolicyName
。通常用于匹配局域网地址或某些特定 IP 段。GEOIP
: 匹配 IP 地址所属的国家/地区代码(ISO 3166-1 Alpha-2 格式),例如GEOIP,CN,PolicyName
。这依赖于 Surge 内置的 GeoIP 数据库。PROCESS-NAME
(macOS only): 匹配发起连接的进程名称,例如PROCESS-NAME,WeChat,PolicyName
。RULE-SET
: 引用一个外部规则集文件或 URL,例如RULE-SET,https://example.com/rules.list,PolicyName
。规则集文件内部通常是多条规则的集合。这对于管理大量规则非常方便,特别是用于广告屏蔽或特定服务的规则集。FINAL
: 兜底规则,如果前面的所有规则都不匹配,就使用这条规则。一份有效的配置必须包含一条 FINAL 规则,并且它必须是最后一条规则。
-
MatchValue
: 根据RuleType
指定的匹配内容。 PolicyName
: 匹配成功后使用的策略名称。可以是[Proxy]
中定义的单个代理名称,也可以是[Proxy Group]
中定义的策略组名称,或者是 Surge 内建的DIRECT
(直连) 或REJECT
(拒绝/阻止) 策略。policy-option
: 规则的额外选项,如force-tcp
(强制使用 TCP) 等。
示例规则列表(注意顺序):
“`ini
[Rule]
优先处理精确匹配的域名和关键词
DOMAIN,bing.com,DIRECT # 访问 bing.com 直连
DOMAIN-SUFFIX,apple.com,DIRECT # 所有苹果服务直连
DOMAIN-KEYWORD,google,Auto Select # 包含 google 的域名走 Auto Select 策略组
处理 IP 地址段
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve # 局域网 IP 直连 (no-resolve 避免 DNS 查询,提高效率)
IP-CIDR,10.0.0.0/8,DIRECT,no-resolve # 局域网 IP 直连
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve # 局域网 IP 直连
IP-CIDR,127.0.0.1/8,DIRECT,no-resolve # 本地环回地址直连
处理国内 IP 或特定国家流量
GEOIP,CN,DIRECT # 国内 IP 直连
GEOIP,US,ProxyA # 访问美国 IP 走 ProxyA (如果你有需求)
使用规则集进行广告屏蔽
RULE-SET,https://raw.githubusercontent.com/example/adblock/master/ad.list,REJECT # 引用远程规则集屏蔽广告
兜底规则 – 所有未匹配的流量都走 Auto Select 策略组
FINAL,Auto Select
“`
重要提示:
FINAL
规则必须是[Rule]
section 的最后一条。DIRECT
和REJECT
是内置策略,无需在[Proxy]
中定义。- 规则顺序至关重要!精细的规则放前面,宽泛的规则放后面,
FINAL
规则殿后。
5.4 使用远程规则集和模块
手动编写所有规则非常繁琐。Surge 提供了强大的功能来简化规则管理:
- 远程规则集 (RULE-SET): 如上所述,你可以通过
RULE-SET,URL,Policy
的方式引用托管在网上的规则文件。这使得更新规则变得非常方便,只需要更新远程文件即可。许多社区维护者提供了用于广告屏蔽、绕过国内 IP、分类网站等功能的远程规则集。 - 模块 (Modules): 模块是 Surge 提供的一种更用户友好的方式来启用/禁用一组特定的配置片段。一个模块可以包含规则、重写、主机等配置。你可以在 Surge 的模块界面中直接启用或禁用模块,而无需手动修改主配置文件。常见的模块有广告屏蔽、优化特定应用的连接等。你可以在社区找到或创建自己的模块。
第六部分:Surge 的常见应用场景
了解了配置文件的基本结构后,我们来看看 Surge 如何应用于实际场景:
-
科学上网 (访问受限内容):
- 在
[Proxy]
中配置你的代理服务器信息(Shadowsocks, Vmess, Trojan 等)。 - 在
[Proxy Group]
中创建一个策略组(如url-test
或select
),包含你的代理。 - 在
[Rule]
中设置规则:- 将国内 IP (
GEOIP,CN
) 和局域网 IP (IP-CIDR,192.168...
) 设置为DIRECT
。 - 将需要代理访问的域名或规则集指向你的代理策略组(如
DOMAIN-SUFFIX,google.com,Auto Select
)。 - 使用
FINAL
规则将所有未匹配的流量也导向代理策略组(如果你希望所有未知流量都走代理)或一个手动选择组(如果你希望手动控制)。
- 将国内 IP (
- 确保你的配置文件使用了规则模式,并启动 Surge。
- 在
-
屏蔽广告 (Ad Blocking):
- 在
[Rule]
中添加规则,将广告域名或 IP 指向REJECT
策略。 - 更高效的方法是使用社区维护的广告屏蔽规则集:在
[Rule]
中添加RULE-SET,远程规则集URL,REJECT
。 - 或者,查找并启用 Surge 的广告屏蔽模块。
- 在
-
隐私保护与安全:
- 使用安全的代理协议和可信的代理服务提供商。
- 启用 Surge 的 HTTPS 解密功能(MITM),需要安装证书,这可以帮助你检查 HTTPS 流量是否安全(但需要信任 Surge 的根证书)。注意:开启 MITM 会影响一些应用的证书验证,可能需要额外的配置。
- 阻止或代理那些你不想让其直连的应用或域名。
-
优化网络性能:
- 使用
url-test
或fallback
策略组,让 Surge 自动选择最优代理。 - 确保本地流量(局域网 IP)设置为
DIRECT
,避免不必要的代理转发。 - 合理设置规则,避免将所有流量都强制走代理,只代理必要的流量。
- 使用
-
网络调试与抓包:
- 在 Surge 的日志 (Log) 或活动 (Activity) 界面,你可以看到所有的网络请求记录。
- 点击具体的连接记录,可以查看请求头、响应头、IP 地址、匹配的规则等详细信息。
- 开启 HTTPS 解密 (MITM) 后,你甚至可以查看加密连接的详细内容。这对于分析应用行为、排查网络问题(如连接超时、返回错误码等)非常有用。
-
分流游戏/特定应用流量:
- 如果你想让某个应用的流量直连或走特定代理,而其他流量走另一条路,可以使用
PROCESS-NAME
(macOS) 规则,或通过DOMAIN/IP-CIDR
规则精确匹配该应用访问的服务器。 - 例如,将游戏的服务器 IP 段或域名设置为
DIRECT
,避免代理带来的延迟。
- 如果你想让某个应用的流量直连或走特定代理,而其他流量走另一条路,可以使用
第七部分:进阶功能初探(了解即可)
- HTTPS 解密 (MITM): 为了查看 HTTPS 流量的详细内容,Surge 需要进行中间人攻击 (Man-in-the-Middle)。这需要你在设备上安装并信任 Surge 生成的根证书。开启后,Surge 可以解密并重新加密 HTTPS 连接。这是一个强大的调试工具,但不建议长期开启,因为它会降低连接安全性(依赖于 Surge 的证书处理)。
- 脚本 (Scripting): Surge 支持使用 JavaScript 编写脚本来修改请求/响应、实现复杂的认证逻辑、或根据特定条件执行动作。这功能非常强大,可以实现许多定制化的需求,但对编程能力有要求。
- HTTP API & Remote Controller: Surge 提供了 HTTP API 接口和远程控制功能,可以通过其他设备或程序来控制 Surge 的状态和切换配置。
第八部分:常见问题与故障排除
- Surge 开启后无法上网:
- 检查 Surge 是否成功启动(VPN 图标是否出现)。
- 检查当前使用的策略(全局策略或策略组)是否选择了有效的代理服务器。
- 检查代理服务器本身是否正常工作(可以在其他客户端或工具中测试)。
- 检查配置文件中的规则是否有误,特别是
FINAL
规则是否指向了错误的策略。 - 查看 Surge 日志,看是哪个连接失败,失败的原因是什么(如连接超时、证书错误、被拒绝等),以及匹配了哪条规则。
- 某个应用或网站无法访问:
- 在 Surge 日志中查找该应用或网站的连接记录。
- 查看该连接匹配了哪条规则,以及应用了什么策略。
- 如果匹配了
REJECT
规则,说明被阻止了;如果匹配了代理规则但无法访问,可能是代理问题或规则错误。 - 尝试调整规则顺序或修改规则,确保该流量被正确处理(例如,对于不该走代理的地址,确保有
DIRECT
规则且顺序靠前)。
- Surge 导致设备变慢:
- 检查是否开启了全局代理模式,如果不是必要,尽量使用规则模式进行分流。
- 确保国内流量、局域网流量等设置为
DIRECT
。 - 如果使用了
url-test
策略组,检查测试 URL 是否正常,测试间隔是否合理。 - 检查代理服务器的延迟和带宽。
- 安装/更新后提示权限问题:
- 确保在系统设置中给予 Surge 必要的权限,如添加 VPN 配置、允许安装辅助工具等。
- macOS 上可能需要输入管理员密码以允许 Surge 安装 Helper Tool。
遇到问题时,仔细查看 Surge 的日志 (Log) 是最重要的排查手段。日志会告诉你每一个连接的详细信息,包括连接的来源、目标、匹配的规则、使用的策略以及连接结果。
第九部分:社区与资源
Surge 拥有一个活跃的用户社区。当你遇到本文未能解决的问题时,可以:
- 查阅 Surge 的官方文档 (NSSurge.com)。官方文档是最新、最权威的资料来源。
- 访问 Surge 的官方论坛或社区,搜索相关问题或发帖求助。
- 在 GitHub 等平台上搜索与 Surge 相关的规则集、模块或配置示例。
记住,配置文件是 Surge 的核心,学习如何编写和理解配置是掌握 Surge 的必经之路。你可以先从修改别人的配置文件开始,逐步理解每个规则和选项的作用。
总结
Surge 是一款功能异常强大的网络工具,它不仅仅是一个简单的代理客户端,更是一个高度可定制的流量管理器和网络调试器。对于入门用户来说,理解其基于规则的配置体系是关键。
通过本指南,你应该已经了解了:
- Surge 的基本功能和应用场景。
- 如何在 iOS 和 macOS 上安装和激活 Surge。
- Surge 的基本界面和代理模式。
- 配置文件的作用、结构和编辑方法。
- 核心概念:代理、策略组和规则的定义与使用。
- 如何利用规则集和模块简化配置。
- 一些常见的应用示例(科学上网、广告屏蔽等)。
- 初步的故障排除思路。
掌握 Surge 需要时间和实践,不要被其复杂性吓倒。从简单的需求开始,逐步学习和尝试更高级的配置。通过理解规则的工作原理和查看日志,你将能够解决大部分网络问题,并充分发挥 Surge 的潜力。
祝你在探索 Surge 的旅程中一切顺利!