Surge
Surge 是由 Yachen Liu 开发的 Apple 生态网络工具,支持 macOS 与 iOS。它在代理客户端里属于高定价路线:iOS 一次性买断,macOS 按年订阅并按设备数计费。其核心吸引力并不只在代理本身,而是“一站式”附加能力(如 DHCP 托管、基础流量统计、Ponte 内网互联、HTTP 抓包调试等),适合预算充裕、希望低门槛尝鲜“轻·软路由”体验的用户。
同时需要提前认知:Surge 的协议路线相对保守,部分主流新协议/新特性支持不完整;macOS 版受 Network Extension 架构约束,性能上限通常不及 Linux/OpenWrt 侧的通用代理核心方案。若你追求的是“协议覆盖最全 + 极限吞吐 + 深度可定制”,应优先评估其他路线。
一句话圈粉:Surge 是“高集成、低折腾”的 Apple 向网络工具,把代理、基础抓包、基础内网互联和基础网络管理打包到一个应用里。
一句话祛魅:它并不是“全协议、全性能、全可定制”的终极解;协议覆盖偏保守、性能受 macOS NE 限制、Ponte 稳定性与中继能力也难与专业组网方案等量齐观。
基本信息
| 项目 | 信息 |
|---|---|
| 平台 | iOS 15.0 及以上 / macOS 13.0 及以上 |
| 价格 | iOS:$49.99(永久授权) / macOS:年付 $50(1 台)/$70(3 台)/$100(5 台) |
| 开发者 | Yachen Liu(nssurge.com) |
| 官网 | nssurge.com |
| App Store(iOS) | 下载地址 |
| 内核 | 自有内核 |
| 更新频率 | 活跃,功能持续扩展 |
关于价格
Surge 的定价在同类客户端中属于高位。iOS 版约 $49.99;macOS 版通常采用年付分档($50/1 台、$70/3 台、$100/5 台)。购买前请以官网最新价格与授权条款为准。Surge 提供 14 天试用期,建议先试用再决定是否购买。
与 Shadowrocket($2.99)或 Quantumult X($7.99)相比,Surge 的价格差异极大,选购前请认真评估自己的实际需求。
核心特性
- 一站式网络工具集合:除代理外,还提供 DHCP 托管、基础流量统计、基础内网互联与抓包调试等功能
- HTTP/HTTPS 调试能力:内置请求查看、过滤、重放、改写等能力,满足中轻度开发调试场景
- 脚本与模块生态:支持 JavaScript 脚本、Module 模块与 Panel 面板,便于把规则与自动化逻辑打包复用
- macOS 系统级接管:可在 macOS 上接管系统流量,并支持进程名规则、Egress 等平台特性
- Ponte(内网互联):提供“开箱即用”的简易内网穿透体验,降低远程互联的上手门槛
- 定位偏“甜点需求”:附加能力多、学习曲线相对低,适合不想自建 OpenWrt/旁路由体系的用户
协议支持
根据官方手册(Proxy Policy)可确认:Surge 支持 SS/VMess/Trojan/WireGuard/SSH/Snell,以及 Hysteria 2、TUIC、AnyTLS 等协议;但未见 VLESS/Reality 的官方代理类型声明。选购前建议始终以官方手册与当前版本变更日志为准。
| 协议 | 支持状态 | 备注 |
|---|---|---|
| Shadowsocks(AEAD) | 支持 | — |
| Shadowsocks 2022 | 支持 | — |
| VMess | 支持 | 常见传输形态可用(以版本为准) |
| VLESS | 不支持 / 未声明 | 官方手册未列为代理类型(请先核对) |
| Trojan | 支持 | — |
| Hysteria 2 | 支持 | iOS 5.8.0+ / macOS 5.4.0+ |
| TUIC v5 | 支持 | 以官方版本说明为准 |
| AnyTLS | 支持 | iOS 5.17.0+ / macOS 6.4.3+ |
| ShadowTLS v3 | 支持(作为混淆层) | 需附着于 TCP 代理配置 |
| WireGuard | 支持(内置) | — |
| SSH | 支持 | — |
| SOCKS5 | 支持 | — |
| HTTP | 支持 | — |
| Snell | 支持 | Surge 自研协议 |
关于 Snell 协议
Snell 是 Surge 团队自行设计的专有代理协议,专为 Surge 生态优化。它需要服务端运行 Snell Server(官方提供),并且只在 Surge 客户端中有完整支持。如果你希望节点能被多种客户端使用,不建议选择 Snell。
安装与购买
iOS
- 切换到非中国区 Apple ID(Surge 仅在部分地区上架,推荐美国区)
- 在 App Store 搜索"Surge 4"
- 支付 $49.99 完成购买
- 安装后系统会请求 VPN 权限,点击"允许"并完成认证
Surge 提供试用模式,部分功能在购买前可以免费体验,但实际代理功能需要购买授权后才能正常使用。
macOS
macOS 版 Surge 从官网直接下载:
- 访问 nssurge.com 下载 Surge for Mac
- 安装后按照向导完成授权激活(需要购买许可证)
- 首次运行需要在"系统设置"→"网络"中允许 Surge 添加 VPN 配置
macOS 版提供 14 天免费试用,试用期内功能完整,试用结束后需购买许可证继续使用。
界面说明
iOS 界面
Surge iOS 的界面分为以下几个主要部分:
| 区域 | 功能 |
|---|---|
| 主界面 | 代理开关、当前出站策略显示、流量统计 |
| Proxies(代理) | 策略组和节点列表,查看和切换节点 |
| Requests(请求) | 实时显示所有网络请求的详细信息 |
| Profiles(配置) | 管理配置文件,支持多个配置文件切换 |
| More(更多) | 工具、诊断、模块管理、MitM 设置等 |
macOS 界面
macOS 版 Surge 提供了功能更为丰富的界面:
- 菜单栏图标:快速开关代理、查看当前节点状态
- 主窗口:配置编辑器、策略组管理、请求记录
- Dashboard:实时流量图表、连接统计
- HTTP Traffic 面板:类似 Charles 的 HTTP 抓包界面,可查看和分析所有 HTTP/HTTPS 请求
配置文件格式
Surge 使用 INI 风格的纯文本配置文件,结构清晰,具备良好的可读性。
基础配置文件结构
[General]
# 全局设置
[Proxy]
# 手动添加的代理节点
[Proxy Group]
# 策略组
[Rule]
# 分流规则
[Host]
# DNS 主机映射(覆盖 DNS 解析)
[URL Rewrite]
# URL 重写规则
[Header Rewrite]
# 请求/响应头修改
[Script]
# 脚本配置
[MITM]
# HTTPS 解密配置
[SSID Setting]
# 基于 SSID 的配置切换
[WireGuard 节点名]
# WireGuard 配置块(每个 WireGuard 节点一个块)
添加代理节点
方法一:添加订阅(机场用户)
Surge 支持从远程 URL 加载配置文件,将整个配置(包括节点、策略组、规则)导入为一个完整的配置文件。
如果机场提供了 Surge 格式的订阅链接:
- 在 iOS 的"Profiles"标签页点击"+"
- 填入 Surge 格式的订阅 URL
- 下载完成后激活该配置文件
如果机场只提供 Clash 格式订阅,Surge 本身不能直接解析 Clash 格式,需要通过以下方式处理:
- 使用 Sub-Converter 等订阅转换服务将 Clash 格式转换为 Surge 格式
- 或者只使用节点 URI(vmess://、trojan://、ss:// 等)手动导入单个节点
关于 Surge 的订阅兼容性
Surge 使用自己的配置格式,与 Clash Meta、Loon、Shadowrocket 的订阅格式均不直接兼容。大型机场通常会专门提供 Surge 格式的订阅,中小型机场可能只提供 Clash 或通用格式,需要手动转换。在选购机场时,可以先确认该机场是否提供 Surge 格式订阅。
方法二:手动添加节点(配置文件)
直接在配置文件的 [Proxy] 块中添加节点,Surge 的节点语法简洁明了:
Shadowsocks(AEAD):
SS-Node = ss, your.server.ip, 8388, encrypt-method=aes-256-gcm, password=your-password
Shadowsocks 2022:
SS2022-Node = ss, your.server.ip, 8388, encrypt-method=2022-blake3-aes-256-gcm, password=base64-key
VMess + WebSocket + TLS:
VMess-Node = vmess, your.domain.com, 443, username=your-uuid, ws=true, ws-path=/your-path, tls=true
Trojan:
Trojan-Node = trojan, your.domain.com, 443, password=your-password
WireGuard(使用独立配置块):
WireGuard-Node = wireguard, section-name=MyWireGuard
然后在配置文件末尾添加对应的 WireGuard 配置块:
[WireGuard MyWireGuard]
private-key = your-private-key
public-key = server-public-key
endpoint = server.ip:51820
allowed-ips = 0.0.0.0/0
SSH 隧道(Surge 独有):
SSH-Node = ssh, your.server.ip, 22, username=user, private-key-path=/path/to/key
方法三:扫码或链接导入单节点
将节点 URI 复制到剪贴板,在 Surge 主界面选择"从剪贴板导入节点",或扫描包含节点 URI 的二维码,可以快速导入单个节点。
策略组(Proxy Group)
Surge 的策略组功能与其他客户端类似,但语法和选项有所不同。
策略组类型
| 类型 | 说明 |
|---|---|
select | 手动选择,从列表中点选一个出站 |
url-test | 自动测速,选延迟最低的节点 |
fallback | 可用性检测,使用第一个可用节点 |
load-balance | 负载均衡,将请求分散到多个节点 |
external | 引用外部策略组(高级用法) |
ssid | 基于 Wi-Fi SSID 自动切换 |
策略组配置示例
[Proxy Group]
# 手动选择总代理出站
Proxy = select, Auto, HK, JP, US, DIRECT
# 自动测速选最低延迟节点
Auto = url-test, HK-1, HK-2, JP-1, JP-2, url=http://www.gstatic.com/generate_204, interval=300, tolerance=50
# 香港节点组(手动选择,可搭配 Proxy Group 引用)
HK = select, HK-1, HK-2, HK-3
# 流媒体专用组(手动选择)
Streaming = select, US-Netflix, JP-Streaming, DIRECT
# 广告过滤
AdBlock = select, REJECT, DIRECT
# 基于 SSID 的策略(公司网络直连,其他网络走代理)
Office-Policy = ssid, default=Proxy, cellular=Proxy, "Office-WiFi"=DIRECT
使用正则表达式筛选节点
Surge 支持在策略组中通过正则表达式自动筛选节点名称,这在节点较多时非常实用:
[Proxy Group]
# 使用 include-all-proxies 和 use-sub-filter 动态筛选
HK = url-test, include-all-proxies=1, use-sub-filter=1, sub-filter-regex=香港|HK|Hong Kong, url=http://www.gstatic.com/generate_204, interval=300
include-all-proxies=1 表示从所有已添加的节点中筛选;sub-filter-regex 通过正则表达式匹配节点名称。
分流规则
Surge 的规则系统功能极为完整,支持多种匹配类型:
[Rule]
# 进程名匹配(macOS 独有)
PROCESS-NAME,Xcode,DIRECT
# 域名精确匹配
DOMAIN,www.example.com,DIRECT
# 域名后缀匹配
DOMAIN-SUFFIX,example.com,Proxy
# 域名关键词匹配
DOMAIN-KEYWORD,youtube,Proxy
# IP CIDR
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
# GeoIP 匹配
GEOIP,CN,DIRECT
# ASN 匹配(按自治系统号匹配,Surge 特有)
IP-ASN,13335,Proxy
# 用户代理匹配(仅 HTTP 流量)
USER-AGENT,Surge*,DIRECT
# 协议匹配
PROTOCOL,QUIC,REJECT
# 子网匹配
SUBNET,192.168.1.0/24,DIRECT
# 最终默认规则
FINAL,Proxy
引用外部规则集
[Rule]
RULE-SET,https://cdn.jsdelivr.net/gh/Loyalsoldier/surge-rules@release/ruleset/reject.txt,REJECT
RULE-SET,https://cdn.jsdelivr.net/gh/Loyalsoldier/surge-rules@release/ruleset/proxy.txt,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Loyalsoldier/surge-rules@release/ruleset/direct.txt,DIRECT
GEOIP,CN,DIRECT
FINAL,Proxy
Loyalsoldier/surge-rules 提供了专门针对 Surge 格式的规则集,是社区最常用的规则来源之一。
General 块常用配置
[General]
# 代理端口
mixed-port = 6152
# 本地 HTTP 代理端口
http-listen = 0.0.0.0:6152
# 本地 SOCKS5 代理端口
socks5-listen = 0.0.0.0:6153
# 是否允许局域网其他设备使用
allow-wifi-access = false
# Wi-Fi 代理端口(当 allow-wifi-access 开启时)
wifi-access-http-port = 6152
wifi-access-socks5-port = 6153
# 测速 URL
proxy-test-url = http://www.gstatic.com/generate_204
# 连接测速超时
test-timeout = 5
# 覆写系统 DNS
dns-server = system, 119.29.29.29, 223.5.5.5
# DNS over HTTPS
doh-server = https://doh.pub/dns-query, https://dns.alidns.com/dns-query
# 跳过代理的地址范围
skip-proxy = 192.168.0.0/24, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local, 100.64.0.0/10
# TUN 排除地址(不通过 TUN 接管)
tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
# GeoIP 数据库 URL(自定义数据源)
geoip-maxmind-url = https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/Country.mmdb
# 启用 IPv6
ipv6 = false
# 崩溃时自动重启(macOS)
# restart-on-crash = true
# 不允许 UDP 的节点处理 UDP 流量时的行为(reject / direct)
udp-policy-not-supported-behaviour = reject
DNS 配置
Surge 提供了精细的 DNS 控制能力:
[General]
# 主要 DNS 服务器
dns-server = system, 119.29.29.29, 223.5.5.5
# DNS over HTTPS(按顺序尝试)
doh-server = https://doh.pub/dns-query, https://dns.alidns.com/dns-query
# 为特定域名指定 DNS 服务器
[Host]
# 覆盖特定域名的 DNS 解析结果
mtalk.google.com = 108.177.125.188
*.google.cn = server:119.29.29.29
*.apple.com = server:system
DNS over HTTPS 进阶配置
Surge 支持为不同域名路由到不同的 DoH 服务器:
[General]
# 默认 DoH
doh-server = https://1.1.1.1/dns-query
# 国内域名的专用 DoH(在某些配置版本中支持 per-domain DoH)
# 注意:具体配置语法以当前版本的官方文档为准
Surge 的 DNS 请求本身也遵循分流规则,发往境外 DoH 的查询可以自动走代理,确保 DNS 不泄露。
URL 重写
[URL Rewrite]
# 格式:匹配模式 替换目标 类型
# 拒绝广告请求
^https?://ad\.example\.com - REJECT
# 302 重定向
^https://old\.example\.com/(.*) https://new.example.com/$1 302
# 修改请求 URL
^https://api\.example\.com/v1/(.*) https://api.example.com/v2/$1 302
Header 重写
Surge 支持修改 HTTP 请求和响应的头部字段:
[Header Rewrite]
# 请求头修改
^https://api\.example\.com request-add X-Custom-Header: custom-value
^https://api\.example\.com request-del Cookie
^https://api\.example\.com request-replace User-Agent Surge/1.0
# 响应头修改
^https://api\.example\.com response-add Access-Control-Allow-Origin: *
^https://api\.example\.com response-del X-Frame-Options
脚本功能
Surge 的脚本能力是目前 iOS 平台中最为完整的,提供了丰富的 JavaScript API。
脚本类型
| 类型 | 触发方式 | 说明 |
|---|---|---|
http-request | URL 匹配时,请求发出前 | 修改请求头、请求体 |
http-response | URL 匹配时,响应到达后 | 修改响应头、响应体 |
cron | 定时任务 | 按 Cron 表达式定时执行 |
event | 系统事件 | 如网络切换、应用打开等 |
dns | DNS 查询时 | 自定义 DNS 解析逻辑 |
rule | 规则匹配时 | 动态决定流量出站 |
脚本配置语法
[Script]
# HTTP 响应脚本
modify-api = type=http-response, pattern=^https://api\.example\.com/user, requires-body=1, timeout=30, script-path=scripts/modify_api.js
# HTTP 请求脚本
add-header = type=http-request, pattern=^https://api\.example\.com, requires-body=0, script-path=scripts/add_header.js
# 定时任务(每天早上 9 点)
daily-check = type=cron, cronexp="0 9 * * *", wake-up=0, script-path=scripts/daily.js
# DNS 自定义解析
custom-dns = type=dns, script-path=scripts/dns_resolver.js
# 规则脚本(动态决定出站)
traffic-classifier = type=rule, script-path=scripts/classifier.js
脚本 API 概览
Surge 的脚本 API 功能极为丰富,以下是常用的 API:
访问请求/响应数据:
// 在 http-request 脚本中访问请求
const url = $request.url;
const method = $request.method;
const headers = $request.headers;
const body = $request.body; // 需要 requires-body=1
// 在 http-response 脚本中访问响应
const status = $response.status;
const respHeaders = $response.headers;
const respBody = $response.body; // 需要 requires-body=1
修改并返回:
// 修改响应体
let json = JSON.parse($response.body);
json.data.vip = true;
$done({ body: JSON.stringify(json) });
// 修改请求头
$done({
headers: {
...$request.headers,
'X-Custom-Header': 'value'
}
});
// 拒绝请求
$done({ response: { status: 200, headers: {}, body: '' } });
持久化存储:
// 写入持久化存储
$persistentStore.write('key', 'value');
// 读取持久化存储
const value = $persistentStore.read('key');
发出网络请求(在脚本中):
// GET 请求
$httpClient.get({
url: 'https://api.example.com/data',
headers: { 'Content-Type': 'application/json' }
}, (error, response, data) => {
const json = JSON.parse(data);
$done({ body: JSON.stringify(json) });
});
// POST 请求
$httpClient.post({
url: 'https://api.example.com/submit',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ key: 'value' })
}, (error, response, data) => {
$done({});
});
通知推送:
// 发送系统通知
$notification.post('标题', '副标题', '通知内容');
日志:
// 输出日志(在 Surge 的日志面板中可见)
console.log('日志内容');
MitM 配置
MitM(中间人解密)是 Surge 最具价值的进阶功能之一,结合 HTTP 抓包工具使用时效果尤为突出。
生成和安装根证书
iOS:
- 进入"More"→"HTTPS Decryption"
- 点击"Generate CA Certificate"生成根证书
- 点击"Install CA Certificate",引导安装证书
- 在 iOS "设置"→"通用"→"VPN 与设备管理"中完成安装
- 在 iOS "设置"→"通用"→"关于本机"→"证书信任设置"中开启完全信任
- 回到 Surge 开启 MitM 总开关
macOS:
- 在 Surge 主菜单或设置中找到"HTTPS Decryption"
- 点击生成和安装证书,macOS 会将证书添加到系统钥匙串
- 在"钥匙串访问"中找到 Surge 生成的证书,将其标记为"始终信任"
MitM 配置块
[MITM]
ca-p12 = 证书的Base64编码数据
ca-passphrase = 证书密码
# 开启 HTTPS 解密的域名
hostname = api.example.com, *.example.net
# 跳过特定域名(即使被通配符覆盖也不解密)
# hostname = *.example.com, -secure.example.com
关于 MitM 的安全考量
Surge 的 MitM 功能主要面向开发者调试场景。安装 MitM 证书后,Surge 可以解密所有配置的 HTTPS 域名的流量。请谨慎配置:
- 只对需要调试或脚本处理的域名启用 MitM
- 不要将生成的 CA 证书文件分享给他人
- 在不需要 MitM 时,可以在配置中关闭或清空 hostname 列表
- 务必确认你充分了解 MitM 的原理和潜在的安全风险
模块系统(Module)
模块是 Surge 的"插件"机制,可以一键安装包含规则、脚本、重写、MitM 配置的综合功能包。
安装模块
iOS:
- 进入"More"→"Module"
- 点击"+"安装新模块
- 填入模块的 URL(
.sgmodule文件) - 安装后在模块列表中可以单独启用/禁用
macOS:
- 在菜单中进入模块管理界面
- 操作方式与 iOS 相同
模块文件格式
#!name=示例模块
#!desc=这是一个示例模块的描述
#!system=ios
[Rule]
DOMAIN-SUFFIX,example-ad.com,REJECT
[URL Rewrite]
^https?://tracking\.example\.com - REJECT
[Script]
example = type=http-response, pattern=^https://api\.example\.com/data, requires-body=1, script-path=https://raw.githubusercontent.com/example/scripts/main/process.js
[MITM]
hostname = api.example.com
模块安装后,其内容会被合并到当前配置中,且在订阅更新时不会被覆盖。
Panel 面板
Panel 是 Surge 特有的功能,允许通过脚本创建自定义的信息展示组件,可以在 Surge 的主界面显示动态信息。
[Script]
# Panel 脚本
node-status = type=generic, script-path=scripts/node_panel.js, timeout=10
[Panel]
# 声明 Panel 并关联脚本
NodeInfo = script=node-status, title=节点信息, content=加载中, style=info
Panel 脚本通过 $done({ title: '面板标题', content: '显示内容', style: 'info' }) 返回要展示的信息,可以显示节点延迟、流量统计、当前 IP 等动态数据。
macOS 版独有功能
增强模式(Enhanced Mode)
macOS 版 Surge 的增强模式通过创建虚拟网络接口,在系统层面接管所有流量,实现真正的全系统透明代理。普通的系统代理设置只能影响支持代理配置的应用,而增强模式可以接管所有网络流量,包括不支持代理的应用。
启用增强模式:在 Surge 的菜单栏图标菜单中,勾选"Enhanced Mode"。
请求查看与 HTTP 调试
macOS 版提供了媲美 Charles 和 Proxyman 的 HTTP/HTTPS 流量调试界面:
- 实时查看所有通过 Surge 的 HTTP/HTTPS 请求
- 查看完整的请求头、响应头、请求体和响应体
- 支持搜索、过滤和导出请求记录
- 可以重放(Replay)已捕获的请求
- 与 MitM 结合,可以查看加密的 HTTPS 流量明文内容
这使得 Surge for Mac 不仅是代理工具,更是一个完整的网络调试平台,对于 iOS/macOS 开发者极具价值。
Egress 策略
macOS 版支持为不同的流量指定不同的网络出口(Egress),适合多网卡环境:
[General]
# 通常不需要手动配置,Surge 会自动处理
在有多个网络接口(如同时连接 Wi-Fi 和以太网,或使用多个 ISP)时,Egress 策略可以控制哪类流量从哪个接口出去。
Ponte(内网穿透)
Ponte 是 Surge 5.x 引入的内网穿透功能,允许两台运行 Surge 的设备(一台在公网,一台在内网)建立安全的私有网络连接:
- 无需公网 IP,通过中继服务器建立连接
- 流量端到端加密
- 可以访问内网设备上的服务,就像两台设备在同一局域网内
Ponte 是 Surge 相比其他代理工具的差异化特色功能,适合需要远程访问家庭或公司内网设备的用户。
完整配置文件示例
以下是一个适合日常使用的 Surge 配置文件示例(优先使用兼容性更稳的协议组合):
[General]
mixed-port = 6152
allow-wifi-access = false
proxy-test-url = http://www.gstatic.com/generate_204
test-timeout = 5
dns-server = system, 119.29.29.29, 223.5.5.5
doh-server = https://doh.pub/dns-query
skip-proxy = 192.168.0.0/24, 10.0.0.0/8, 172.16.0.0/12, 127.0.0.1, localhost, *.local
ipv6 = false
udp-policy-not-supported-behaviour = reject
[Proxy]
SS-Node = ss, your.server.ip, 8388, encrypt-method=aes-256-gcm, password=your-password
Trojan-Node = trojan, your.domain.com, 443, password=your-password
[Proxy Group]
Proxy = select, Auto, SS-Node, Trojan-Node, DIRECT
Auto = url-test, SS-Node, Trojan-Node, url=http://www.gstatic.com/generate_204, interval=300, tolerance=50
[Rule]
RULE-SET,https://cdn.jsdelivr.net/gh/Loyalsoldier/surge-rules@release/ruleset/reject.txt,REJECT
RULE-SET,https://cdn.jsdelivr.net/gh/Loyalsoldier/surge-rules@release/ruleset/proxy.txt,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Loyalsoldier/surge-rules@release/ruleset/direct.txt,DIRECT
GEOIP,CN,DIRECT,no-resolve
FINAL,Proxy
[Host]
[URL Rewrite]
[Script]
[MITM]
与其他 iOS / macOS 客户端的对比
| 对比维度 | Surge | Shadowrocket | Quantumult X | Stash | Loon |
|---|---|---|---|---|---|
| 价格 | iOS $49.99;macOS 年付分档 | $2.99 | $7.99 | 免费(内购) | $2.99 |
| HTTP 调试能力 | 企业级(类 Charles) | 无 | 基础 | 无 | 基础 |
| 脚本能力 | 极强(API 最丰富) | 中 | 极强 | 有限 | 强 |
| 模块/插件 | 支持(Module) | 无 | 无 | 无 | 支持(Plugin) |
| Panel 自定义面板 | 支持 | 无 | 无 | 无 | 无 |
| WireGuard 内置 | 支持 | 支持 | 支持 | 支持 | 支持 |
| SSH 协议 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 |
| macOS 版本 | 支持(功能更强) | 不支持 | 不支持 | 支持 | 不支持 |
| 内网穿透(Ponte) | 支持(macOS) | 不支持 | 不支持 | 不支持 | 不支持 |
| 增强模式(全局透明代理) | 支持(macOS) | 无 | 无 | 支持(TUN) | 支持(TUN) |
| 进程名规则(macOS) | 支持 | — | — | — | — |
| Clash 订阅兼容 | 有限(通常需转换) | 有限 | 有限 | 极高 | 较高 |
| 协议覆盖新潮程度 | 中低(偏保守) | 中 | 中 | 高 | 中 |
| 适合人群 | 预算充裕的 Apple 用户、轻专业调试场景 | 入门用户 | 脚本爱好者 | Clash 用户 | 进阶用户 |
选择 Surge 的核心理由:
- 你希望“一个应用解决多件事”:代理 + 基础抓包 + 基础内网互联 + 基础网络管理,减少工具切换成本
- 你在 Apple 设备上需要开箱即用体验:不想折腾 OpenWrt/旁路由,也不想维护复杂自建栈
- 你主要使用兼容性成熟的协议:需求集中在 SS/VMess/Trojan/WireGuard 等常见方案
- 你愿意为产品化体验付费:macOS 年付授权本质上是“省时间、买集成”的选择
- 你需要轻量级专业能力:偶尔排查请求、做规则验证、看基础流量指标
不选择 Surge 的情形:
- 预算有限,需求是基本代理功能(Shadowrocket $2.99 完全够用)
- 主要使用 Clash Meta 格式订阅(Stash 兼容性最好,且免费)
- 强依赖 VLESS 全家桶或其他新协议新特性
- 追求 Linux/OpenWrt 级别的极限性能与深度可定制
- 需要更稳定、可自建中继体系的内网组网能力(如 DERP/Moon 类能力)
- 不需要 HTTP 调试和复杂脚本能力
- 是 Windows 或 Android 用户(Surge 只支持 Apple 生态)
批判性总结
- 高价不等于全能:Surge 的付费门槛在同类中偏高,但协议覆盖与新特性跟进并不总是匹配“旗舰定价”预期。
- 产品哲学偏封闭:官方路线强调统一体验,用户可改造空间有限;若你希望“按自己菜单做定制”,会感到束手束脚。
- 软路由能力是“浅尝辄止”:它能覆盖部分软路由场景,但难以替代 OpenWrt + 通用核心 + 可编排插件体系。
- Ponte 是加分项,不是决定项:能用、易上手,但稳定性与中继可控性仍弱于 Tailscale/Zerotier 的成熟工程化方案。
- 性能认知要分场景:在 macOS 客户端里它可能表现不错;但与 Linux/OpenWrt 的高性能代理栈对比时,吞吐上限通常不是一个量级。
常见使用技巧
快速节点切换
在 iOS 版主界面,点击当前策略组显示区域可以快速展开节点列表。长按某个节点可以触发延迟测试。
在 macOS 版,点击菜单栏图标,可以在下拉菜单中直接切换策略组和节点,无需打开主窗口。
使用外部配置文件托管
Surge 支持将配置文件托管在远程 URL,并定期自动同步。这样可以在多台设备间共享配置,修改配置文件后所有设备会在下次同步时自动更新:
在"Profiles"中添加远程配置 URL,设置自动同步间隔。
macOS 版配置自动重载
修改配置文件后,Surge for Mac 可以自动检测到文件变化并重新加载,无需手动操作。在"通用"设置中开启"Auto Reload Config When Modified"。
使用 iCloud 同步配置
Surge 支持将配置文件存储在 iCloud Drive 中,实现 iOS 和 macOS 之间的配置同步。在 Surge 的配置存储位置设置中,选择 iCloud Drive。
诊断工具
Surge 内置了多种诊断工具,在"More"(iOS)或菜单中可以访问:
- Ping / Traceroute:对节点进行网络连通性检测
- DNS Lookup:手动触发 DNS 查询,查看解析结果
- Rule Testing:输入域名或 IP,查看会命中哪条规则
常见问题
Q:Surge 的价格这么贵,值得吗?
这取决于你的需求:
- 如果你是 iOS / macOS 开发者,需要网络调试工具,Surge 可以部分替代 Charles(macOS 版约 $50/年),综合性价比是合理的
- 如果你接受“高集成但并非全协议全性能”的取舍,且重视产品化体验,Surge 可以考虑
- 如果你只需要基本的代理和分流功能,Shadowrocket($2.99)或 Stash(免费)完全够用,Surge 的溢价对你没有价值
Q:Surge 支持 Clash 格式订阅吗?
Surge 的配置格式与 Clash 不同,不能直接导入 Clash 格式的订阅。解决方案:
- 联系机场客服请求 Surge 格式的订阅链接
- 使用 Sub-Converter 等工具将 Clash 格式转换为 Surge 格式(转换质量取决于工具的支持程度)
- 手动将关键节点从 Clash 格式转录为 Surge 格式
Q:Surge iOS 版和 macOS 版是两个独立的购买吗?
是的,iOS 版和 macOS 版是独立销售的,需要分别购买。购买 iOS 版不赠送 macOS 版,反之亦然。
Q:Surge 的脚本和 Quantumult X 的脚本兼容吗?
不直接兼容。Surge 和 QX 的脚本 API 有所不同(主要体现在对象名称和某些方法的差异上)。大量社区脚本已经针对两者都做了兼容处理(在脚本内部判断运行环境后调用对应 API),但也有部分脚本只支持其中一个平台。使用前请查看脚本的兼容性说明。
Q:Rule 脚本的使用场景是什么?
Rule 类型的脚本用于实现动态的路由决策,可以根据运行时信息(如当前时间、外部 API 响应等)动态决定某条连接走哪个出站。这在静态规则无法满足需求的场景下非常有用,例如:
- 根据服务器当前负载动态选择节点
- 在特定时间段使用不同的路由策略
- 根据目标服务器的 IP 地理位置动态决策
Q:Surge 的 Panel 功能如何使用?
Panel 需要编写对应的脚本来提供数据,然后在配置文件中声明 Panel 并关联脚本。Panel 的内容每次打开 Surge 主界面时会刷新,也可以手动点击刷新。社区有很多现成的 Panel 脚本可以直接使用,只需安装对应的模块即可。
Q:增强模式(macOS)对性能有影响吗?
会有影响。增强模式依赖 macOS Network Extension 接管流量,吞吐与时延表现通常明显受系统框架上限约束。对多数日常使用场景影响可接受,但若目标是极限吞吐或高并发转发,Linux/OpenWrt 侧通用核心方案通常有更高上限。
安全注意事项
- 只从官方渠道获取 Surge:通过 App Store(iOS)或 nssurge.com 官网(macOS)下载,不要使用破解版或非官方分发的版本
- MitM 根证书的安全:安装 MitM 证书后,相当于赋予了 Surge 解密特定 HTTPS 流量的能力,请谨慎配置并妥善保管证书文件
- 脚本和模块的来源审查:Surge 的脚本可以发出网络请求和访问持久化存储,运行不可信来源的脚本存在隐私泄露风险
- 配置文件中的敏感信息:配置文件中包含节点密码、UUID 等敏感信息,不要将完整的配置文件上传到公开仓库
- 定期检查安装的模块:定期审查已安装的模块,清理不再使用的模块,避免不必要的 MitM 主机名和脚本在后台运行
相关资源
- Surge 官网:nssurge.com
- Surge 官方文档:manual.nssurge.com
- Surge 官方 Telegram 频道:@SurgeNews
- Loyalsoldier Surge 规则集:github.com/Loyalsoldier/surge-rules
- Surge 脚本社区示例:github.com/Peng-YM/QuanX(部分脚本同时支持 Surge)
延伸阅读
- Shadowrocket — 入门级 iOS 代理客户端,$2.99 性价比高
- Quantumult X — 同样有强大脚本能力,价格更低的替代选择
- Stash — 基于 Mihomo 内核,Clash Meta 订阅兼容性最佳,同时支持 macOS
- Loon — 插件生态丰富,兼顾易用性和可定制性
- 代理软件总览 — 回到软件总览页面