掌握Surge:入门级用户指南(iOS/macOS) – wiki基地


掌握 Surge:入门级用户指南(iOS/macOS)

欢迎来到 Surge 的世界!如果你正在寻找一款强大、灵活的网络工具来管理你的设备流量,那么你很可能已经听说过 Surge。它不仅仅是一个简单的代理客户端,更是一个集网络代理、流量监控、规则过滤、抓包调试等多种功能于一身的瑞士军刀。

对于新手来说,Surge 复杂的界面和大量的配置选项可能会让人望而却步。但请放心,通过本篇详细的入门指南,你将逐步了解 Surge 的核心概念、基本操作和常见应用场景,从而能够自信地驾驭这款强大的工具。

本文将涵盖 Surge 在 iOS 和 macOS 上的入门级使用,包括安装、基本设置、核心概念(如规则、代理组、配置)以及一些常见的应用示例。无论你是想科学上网、屏蔽广告、优化网络性能还是进行简单的网络调试,Surge 都能满足你的需求。

免责声明: Surge 是一款付费软件,需要通过官方渠道购买授权。使用代理服务需要遵守当地法律法规。本文仅为技术交流和学习目的,不提供任何非法用途的指引。

第一部分:初识 Surge – 它是做什么的?

在深入细节之前,我们先来理解 Surge 的核心功能:

  1. 网络代理 (Proxy): 这是 Surge 最基本也是最重要的功能。它允许你的设备通过一个或多个指定的服务器来转发网络请求。这可以帮助你访问地理限制的内容、保护你的隐私等。
  2. 流量管理与过滤 (Rule-based Routing): Surge 最强大的地方在于其基于规则的流量管理。你可以设置精细的规则,决定哪些流量走代理、哪些流量直连(不走代理)、哪些流量应该被阻止(如广告)。
  3. 网络调试与监控 (Debugging & Monitoring): Surge 可以详细记录和显示设备的所有网络请求和响应。这对于开发者分析应用网络行为、用户诊断网络问题非常有帮助。
  4. 内容修改 (Content Modification): 通过脚本功能,Surge 甚至可以修改网络请求和响应的内容,实现更高级的功能(这通常是进阶用途,入门阶段只需了解即可)。
  5. 模块 (Modules): Surge 提供了模块功能,可以将特定的规则或设置打包,方便用户快速启用或禁用某些功能,如广告屏蔽、强制 HTTPS 等。

简单来说,Surge 就是你设备的网络守门员和交通指挥官,它能按照你设定的规则,决定每一个网络连接的走向和处理方式。

第二部分:获取与安装 Surge

Surge 是一个跨平台的付费应用,支持 iOS 和 macOS。购买授权通常是绑定到你的 Surge 账号,可以在授权设备数量范围内使用。

  1. 购买授权: 访问 Surge 官方网站 (NSSurge.com) 或通过其他官方授权渠道购买。购买后会获得一个授权文件或授权码。
  2. 下载应用:
    • **iOS: ** 在 App Store 中搜索 “Surge”,找到 Surge 4 或最新版本(通常是同一个 App Store Listing,名字是 Surge 5 或更新)。下载并安装。
    • **macOS: ** 访问 Surge 官方网站 (NSSurge.com),下载 macOS 版本安装包。macOS 版本通常不通过 Mac App Store 分发。
  3. 激活授权:
    • **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 有几种基本的代理模式,你需要在配置中选择一种作为默认或回退模式:

  1. 全局代理 (Global Proxy): 所有网络流量都通过你指定的代理服务器转发。这通常用于测试或访问所有内容都需要代理的场景。
  2. 规则代理 (Rule-based Proxy): 这是 Surge 最常用和推荐的模式。Surge 会根据你在配置文件中设定的规则来判断每个连接是走代理、直连还是被阻止。
  3. 直连 (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: 策略组的类型,决定了如何从 Policy1PolicyN 中选择一个策略:
    • 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 是一个自动测速组,包含了 MyAwesomeProxyAnotherProxy,Surge 每 600 秒测试一次 http://www.gstatic.com/generate_204,选择延迟最低的。
* Manual Switch 是一个手动选择组,你可以自由切换使用 MyAwesomeProxy, AnotherProxy, DirectConnectionRejectTraffic
* 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 的最后一条。
  • DIRECTREJECT 是内置策略,无需在 [Proxy] 中定义。
  • 规则顺序至关重要!精细的规则放前面,宽泛的规则放后面,FINAL 规则殿后。

5.4 使用远程规则集和模块

手动编写所有规则非常繁琐。Surge 提供了强大的功能来简化规则管理:

  • 远程规则集 (RULE-SET): 如上所述,你可以通过 RULE-SET,URL,Policy 的方式引用托管在网上的规则文件。这使得更新规则变得非常方便,只需要更新远程文件即可。许多社区维护者提供了用于广告屏蔽、绕过国内 IP、分类网站等功能的远程规则集。
  • 模块 (Modules): 模块是 Surge 提供的一种更用户友好的方式来启用/禁用一组特定的配置片段。一个模块可以包含规则、重写、主机等配置。你可以在 Surge 的模块界面中直接启用或禁用模块,而无需手动修改主配置文件。常见的模块有广告屏蔽、优化特定应用的连接等。你可以在社区找到或创建自己的模块。

第六部分:Surge 的常见应用场景

了解了配置文件的基本结构后,我们来看看 Surge 如何应用于实际场景:

  1. 科学上网 (访问受限内容):

    • [Proxy] 中配置你的代理服务器信息(Shadowsocks, Vmess, Trojan 等)。
    • [Proxy Group] 中创建一个策略组(如 url-testselect),包含你的代理。
    • [Rule] 中设置规则:
      • 将国内 IP (GEOIP,CN) 和局域网 IP (IP-CIDR,192.168...) 设置为 DIRECT
      • 将需要代理访问的域名或规则集指向你的代理策略组(如 DOMAIN-SUFFIX,google.com,Auto Select)。
      • 使用 FINAL 规则将所有未匹配的流量也导向代理策略组(如果你希望所有未知流量都走代理)或一个手动选择组(如果你希望手动控制)。
    • 确保你的配置文件使用了规则模式,并启动 Surge。
  2. 屏蔽广告 (Ad Blocking):

    • [Rule] 中添加规则,将广告域名或 IP 指向 REJECT 策略。
    • 更高效的方法是使用社区维护的广告屏蔽规则集:在 [Rule] 中添加 RULE-SET,远程规则集URL,REJECT
    • 或者,查找并启用 Surge 的广告屏蔽模块。
  3. 隐私保护与安全:

    • 使用安全的代理协议和可信的代理服务提供商。
    • 启用 Surge 的 HTTPS 解密功能(MITM),需要安装证书,这可以帮助你检查 HTTPS 流量是否安全(但需要信任 Surge 的根证书)。注意:开启 MITM 会影响一些应用的证书验证,可能需要额外的配置。
    • 阻止或代理那些你不想让其直连的应用或域名。
  4. 优化网络性能:

    • 使用 url-testfallback 策略组,让 Surge 自动选择最优代理。
    • 确保本地流量(局域网 IP)设置为 DIRECT,避免不必要的代理转发。
    • 合理设置规则,避免将所有流量都强制走代理,只代理必要的流量。
  5. 网络调试与抓包:

    • 在 Surge 的日志 (Log) 或活动 (Activity) 界面,你可以看到所有的网络请求记录。
    • 点击具体的连接记录,可以查看请求头、响应头、IP 地址、匹配的规则等详细信息。
    • 开启 HTTPS 解密 (MITM) 后,你甚至可以查看加密连接的详细内容。这对于分析应用行为、排查网络问题(如连接超时、返回错误码等)非常有用。
  6. 分流游戏/特定应用流量:

    • 如果你想让某个应用的流量直连或走特定代理,而其他流量走另一条路,可以使用 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 的旅程中一切顺利!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部