Surge 配置指南:从零开始设置你的网络环境 – wiki基地


Surge 配置指南:从零开始设置你的网络环境

在当今高度互联的世界中,网络已经成为我们生活和工作中不可或缺的一部分。无论是为了访问特定资源、提高网络速度、保护隐私安全,还是进行网络调试,一款强大的网络工具都显得至关重要。Surge,作为 Apple 平台(macOS 和 iOS)上备受推崇的网络工具,以其强大的功能、高度的灵活性和精细的控制能力,赢得了众多高级用户的青睐。它不仅仅是一个简单的代理客户端,更是一个集网络请求抓取、规则分流、DNS 管理、脚本扩展于一体的综合性网络环境解决方案。

然而,对于初次接触 Surge 的用户来说,其复杂的配置选项和专业术语可能会让人望而却步。本指南旨在为你提供一份详尽的、从零开始的 Surge 配置教程,帮助你理解其核心概念,掌握基本配置方法,并最终能够根据自己的需求定制化网络环境。

一、 认识 Surge:它是什么,能做什么?

在深入配置之前,我们首先需要理解 Surge 的本质。简单来说,Surge 在你的设备上创建了一个本地的代理服务器(或虚拟网卡),接管了设备上几乎所有的网络流量(HTTP/HTTPS/TCP)。然后,它会根据你预设的配置文件 (Configuration) 中的规则,智能地决定每一条网络连接应该如何处理:

  1. 代理转发 (Proxy): 将流量通过你指定的远程代理服务器(如 Shadowsocks, Vmess, Trojan, Snell, HTTP/SOCKS5 等)进行转发,常用于访问受限网络资源或隐藏真实 IP。
  2. 直接连接 (Direct): 让流量不经过任何代理,直接连接目标服务器,适用于访问国内服务或无需代理的网站,以获得最佳速度和兼容性。
  3. 拒绝连接 (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): 将常用的配置片段(如广告屏蔽规则、特定应用规则)做成模块,方便复用和管理。

二、 准备工作:开始配置前你需要什么?

  1. Surge 应用程序: 你需要从 App Store 购买并下载 Surge for macOS 或 Surge for iOS。它们是独立购买的。
  2. 代理服务信息 (如果需要): 如果你的主要目的是使用代理访问网络,你需要拥有至少一个可用的代理服务器订阅或节点信息。这通常由机场服务商提供,或者你也可以自建代理服务器。这些信息通常包含服务器地址、端口、密码/UUID、加密方式等。服务商通常会提供一个配置链接 (URL) 或者二维码。
  3. 基础网络知识 (可选但推荐): 了解一些基础概念,如 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: 负载均衡组 (较少用于普通代理场景)。
    • 策略组可以嵌套,即一个策略组的成员可以是另一个策略组。
    • DIRECTREJECT 也是特殊的 “节点”,可以加入策略组。
    • 示例:
      “`
      # 手动选择组,包含两个 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, ProxyFINAL, DIRECT
    • 策略部分通常是 [Proxy Group] 中定义的策略组名称,或者是 DIRECTREJECT
    • 示例:
      “`
      # 广告屏蔽规则 (通常引用外部规则集)
      # 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_addresshostname = 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 定时任务)。

四、 获取和导入配置文件

对于初学者,最快捷的方式通常是使用由代理服务商提供的配置文件链接。

  1. 通过 URL 导入 (推荐初学者):

    • 获取你的服务商提供的 Surge 配置订阅链接 (通常以 .conf 结尾)。
    • iOS: 打开 Surge -> 首页 -> 从 URL 下载配置 -> 粘贴链接 -> 下载。
    • macOS: 打开 Surge -> 菜单栏 -> 文件 (File) -> 从 URL 下载配置文件 (Download Profile from URL) -> 粘贴链接 -> 下载。
    • 下载后,Surge 会提示你将此配置设为当前配置。
    • 这种方式的好处是,服务商更新节点信息后,你可以在 Surge 中方便地更新配置。
  2. 手动创建或编辑:

    • 你可以基于模板或者他人的配置进行修改,或者完全从头编写。
    • iOS: 可以通过 Surge 内置编辑器、iCloud Drive 或其他文件管理应用编辑 .conf 文件,然后从文件导入。
    • macOS: 可以使用任何文本编辑器 (如 VS Code, Sublime Text, 甚至自带的文本编辑.app) 编辑 .conf 文件,然后通过 Surge 菜单栏 -> 文件 -> 从本地导入配置文件… 来加载。

五、 启动 Surge 并开始使用

  1. 选择配置: 确保你想要使用的配置文件已被选中为“当前配置”。

    • iOS: 在“首页”顶部可以看到当前配置名称,点击可切换。
    • macOS: 在 Surge 菜单栏图标下拉菜单中,”切换配置 (Switch Profile)” 下选择。
  2. 启动 Surge:

    • iOS: 在“首页”点击顶部的开关按钮,使其变为绿色。首次启动会请求 VPN 配置权限,请允许。
    • macOS: 点击 Surge 菜单栏图标,选择 “设为系统代理 (Set as System Proxy)”。图标会变亮,表示 Surge 正在工作。
  3. 选择策略 (如果配置了 select 类型的策略组):

    • iOS: 在“策略组”标签页,找到你定义的 select 组 (如 Proxy, Manual-Selection),点击进入,然后选择你想要使用的节点或子策略组。
    • macOS: 点击 Surge 菜单栏图标,会列出所有 select 类型的顶级策略组,展开后即可选择节点。
  4. 测试网络: 打开浏览器,尝试访问一些网站,如 google.com (如果需要代理才能访问) 和 baidu.com (通常应直连)。检查是否按预期工作。

六、 监控与调试

  • 仪表盘 (Dashboard):
    • iOS: “仪表盘”标签页。
    • macOS: Surge 菜单栏 -> 显示 Surge 仪表盘 (Show Surge Dashboard)。
    • 这里可以看到实时速率、总流量、活动连接、DNS 缓存等信息。
  • 最近请求 (Recent Requests):
    • iOS: “请求”标签页。
    • macOS: Surge 仪表盘 -> 左侧“最近请求”。
    • 这里列出了通过 Surge 的网络请求记录。你可以看到每个请求的 URL、使用的策略、命中的规则、耗时等。这是排查问题的关键工具。如果某个网站打不开,可以在这里查看它的请求是被 REJECT 了,还是走了错误的 PROXYDIRECT
  • 日志 (Log):
    • iOS: “更多” -> 日志。
    • macOS: Surge 菜单栏 -> 显示日志控制器 (Show Log Controller)。
    • 日志提供了更详细的内部运行信息,包括错误信息。调整 [General] 中的 loglevel 可以改变日志的详细程度。

七、 HTTPS 解密 (MITM) 的配置与使用

MITM 功能强大但也涉及安全风险,请谨慎使用。

  1. 生成 CA 证书:
    • iOS: “首页” -> 点击当前配置进入编辑 -> 滚动到底部 -> MITM -> 点击“生成新的 CA 证书”。
    • macOS: Surge 菜单栏 -> 配置 (Configure) -> 生成新的 CA 证书 (Generate New CA Certificate)。
  2. 安装并信任 CA 证书:
    • 生成后,点击“安装证书”或“配置证书”。
    • iOS: 会跳转到 Safari 下载描述文件,下载后去系统 设置 -> 通用 -> VPN 与设备管理 -> 已下载的描述文件 -> 安装。安装后,还需要去 设置 -> 通用 -> 关于本机 -> 证书信任设置 -> 找到 Surge 开头的证书,打开信任开关。
    • macOS: 会自动打开“钥匙串访问 (Keychain Access)”。找到 Surge 开头的证书,双击 -> 展开“信任” -> “使用此证书时”选择“始终信任”。
  3. 配置 MITM 主机名:
    • 在配置文件的 [MITM] 段落下,使用 hostname = ... 指定需要解密的主机名。例如 hostname = api.example.com, *.applevideo.com。使用 %INSERT% 配合规则中的 force-http-engine-hosts 参数是更灵活的方式。
  4. 启用 MITM:
    • [General] 段落中,确保 mitm = enable (或类似设置,具体看 Surge 版本) 处于开启状态。
    • iOS: 在 Surge 首页,确保 MITM 开关是打开的。
    • macOS: 在 Surge 菜单栏,确保 “HTTPS 解密 (MITM)” 选项是勾选的。
  5. 验证: 启用后,访问你配置的 HTTPS 网站,在“最近请求”中应该能看到解密后的 HTTP 内容(如果请求本身是文本)。

八、 进阶话题与资源

  • 规则集 (Rule Set): 将大量同类规则(如广告屏蔽、国内网站列表)放在外部文件或 URL 中引用,使主配置文件更简洁。使用 RULE-SET 规则类型。
  • 模块 (Module): 将一部分配置 (如 MITM 设置、特定应用规则、脚本) 做成独立的 .sgmodule 文件,通过 [General] 中的 include 参数或图形界面加载,方便管理和分享。
  • 脚本 (Scripting): 使用 JavaScript 编写脚本,实现签到、修改请求/响应体、自定义通知等复杂功能。需要一定的编程基础。
  • 外部资源: GitHub 等社区有大量用户分享的 Surge 规则集、模块和脚本,善用搜索可以找到满足特定需求的资源。

九、 常见问题与排错思路

  1. 无法上网:
    • 检查 Surge 是否已启动 (开关是否打开/菜单栏图标是否点亮)。
    • 检查配置文件语法是否正确 (可在 Surge 内进行语法检查)。
    • 检查 [Proxy] 中的节点信息是否正确、是否可用 (可在策略组中手动测试延迟)。
    • 检查 [Rule] 中的 FINAL 规则是否设置正确,是否不小心将所有流量 REJECT 或走了不可用的 DIRECT
    • 查看“最近请求”和“日志”,分析是 DNS 解析问题、连接超时还是被拒绝。
  2. 特定网站/App 无法访问:
    • 在“最近请求”中找到该网站/App 的请求记录。
    • 查看它命中了哪条规则,走了哪个策略。
    • 如果是走了 PROXY,尝试切换到其他可用节点或 DIRECT
    • 如果是走了 DIRECT,尝试为其添加一条规则强制走 PROXY
    • 如果是被 REJECT,检查是否有过于宽泛的屏蔽规则命中了它。
    • 检查是否开启了 MITM,某些 App 有证书校验,可能导致开启 MITM 后无法联网。尝试关闭 MITM 或在该 App 的规则中加入 skip-analysis 参数。
  3. 速度慢:
    • 如果是代理速度慢,使用 url-test 策略组自动选择延迟最低的节点,或手动切换到其他节点。
    • 检查是否有不必要的请求走了代理 (如国内网站),优化 [Rule] 配置。
    • 检查设备本身的网络环境。
  4. 配置文件更新后无效:
    • 确保修改的是当前正在使用的配置文件。
    • 修改后需要重新加载配置 (Reload Configuration)。
    • macOS: Surge 菜单栏 -> 配置 -> 重新加载配置 (Reload Configuration)。
    • iOS: 编辑配置后保存即可自动应用,或在“首页”下拉刷新。

十、 结语

Surge 是一款功能极其强大的网络工具,初次接触可能会觉得复杂,但只要理解了其基于配置文件的核心工作流,掌握了 [General], [Proxy], [Proxy Group], [Rule] 这几个关键部分的作用和关系,你就能够逐步构建起符合自己需求的网络环境。

本指南旨在为你铺平入门之路,但 Surge 的潜力远不止于此。不断实践、尝试不同的配置组合、探索脚本和模块的世界,你将发现 Surge 能为你带来前所未有的网络控制力和可能性。从今天起,开始打造属于你的、更高效、更自由、更安全的网络空间吧!


发表评论

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

滚动至顶部