Surge iOS/macOS进阶教程:脚本执行、MITM抓包与策略组高级配置完整指南2026
文章说明:本文基于 Surge iOS 5.x 和 Surge for Mac 5.x(2026年最新版本)编写。Surge 是 iOS/macOS 平台功能最全面、性能最强大的网络工具,不仅是代理工具,更是完整的网络调试平台。本文重点介绍进阶功能:脚本系统、MitM、策略组和模块。
Surge:为什么是iOS代理工具的天花板?
Surge 诞生于 2015 年,是 iOS 代理工具领域的先驱者。它的设计理念与 Shadowrocket、Quantumult X 完全不同——Surge 定位为网络调试工具,代理功能反而是附属能力。正因如此,它拥有其他工具无法企及的功能深度:完整的 HTTP/HTTPS 抓包与解析、细粒度的流量控制、类 Python 的脚本 API、强大的模块系统、以及 macOS 版本还可以成为整个局域网的代理网关(Gateway 模式)。价格虽高(iOS 版约 $49.99 起),但对于有专业需求的用户来说物超所值。
Surge配置文件结构详解
Surge 使用 INI 格式的配置文件(.conf),结构清晰,所有功能都通过配置文件控制。理解配置文件结构是掌握 Surge 的基础。
[General] 全局设置
[General]
loglevel = notify
http-listen = 0.0.0.0:8888
socks5-listen = 0.0.0.0:8889
dns-server = 8.8.8.8, 1.1.1.1
skip-proxy = 192.168.0.0/24, localhost, *.local
tun-excluded-routes = 192.168.0.0/16
enhanced-mode-by-rule = true
[Proxy] 节点配置
[Proxy]
HK-01 = trojan, hk01.vpn07.com, 443, password=xxx, sni=hk01.vpn07.com
JP-01 = vmess, jp01.vpn07.com, 443, username=xxx, ws=true, ws-path=/v2ray
US-01 = vless, us01.vpn07.com, 443, uuid=xxx, tls=true, reality=true
[Proxy Group] 策略组
[Proxy Group]
🚀 节点选择 = select, 🇭🇰 香港节点, 🇯🇵 日本节点, 🇺🇸 美国节点, DIRECT
🇭🇰 香港节点 = url-test, HK-01, HK-02, url=http://1.1.1.1/generate_204, interval=300
🎬 流媒体 = select, 🇺🇸 美国节点, 🇯🇵 日本节点
🛡️ 广告拦截 = select, REJECT, DIRECT
[Rule] 分流规则
[Rule]
RULE-SET,https://cdn.jsdelivr.net/rules/reject.txt, 🛡️ 广告拦截
RULE-SET,https://cdn.jsdelivr.net/rules/proxy.txt, 🚀 节点选择
RULE-SET,https://cdn.jsdelivr.net/rules/china.txt, DIRECT
GEOIP,CN,DIRECT
FINAL,🚀 节点选择
MitM(HTTPS解密)完整配置
MitM(Man-in-the-Middle)是 Surge 最重要的进阶功能之一,允许你拦截、查看和修改设备上所有 HTTPS 流量。这对于调试 App 接口、过滤广告请求、修改 API 响应都非常有用。
生成并安装CA证书
在 Surge 主界面「设置」→「MitM」→「生成新的CA证书」→「安装证书」。系统会跳转到 Safari 下载描述文件,回到「设置 App」→「通用」→「VPN与设备管理」→ 找到 Surge 描述文件 → 安装。然后在「设置」→「通用」→「关于本机」→「证书信任设置」中开启对 Surge CA 的完全信任。
配置解密域名(hostname)
在配置文件 [MitM] 区域的 hostname 中指定需要解密的域名。不要对所有域名开启,只解密你需要调试的域名。格式:
[MitM]
hostname = api.example.com, *.another-api.com
ca-passphrase = YourPassword
ca-p12 = MIIKgAIBAzCCCjYGCSqGSIb3DQEHATCCC...
在请求记录中查看HTTPS内容
MitM 启用后,在 Surge 主界面「请求记录」中,HTTPS 请求会显示完整内容(请求头、Body、响应数据)。点击任意请求可以看到完整的 HTTP 会话详情,方便分析 App 的 API 调用。
脚本系统(Script)深度解析
Surge 的脚本系统是业界最完整的,提供了丰富的 API 供 JavaScript 脚本调用。脚本可以读写持久化存储、发起网络请求、显示通知、操作响应数据等。
http-request 脚本
拦截并修改 HTTP 请求,在请求发出前执行。可以修改请求头、URL、Body。
http-request ^https://api\.example\.com script-path=modify-request.js
http-response 脚本
拦截并修改 HTTP 响应,在收到响应后执行。可以修改响应内容、删除广告数据、注入内容。
http-response ^https://api\.example\.com script-path=modify-response.js, requires-body=true
cron 定时脚本
按 Cron 表达式定时执行脚本,适合自动签到、数据刷新等定时任务。
cron "0 9 * * *" script-path=daily-task.js, tag=每日任务
event 事件脚本
响应特定事件(如网络切换、代理状态变化)自动执行脚本。适合自动化网络环境切换逻辑。
event network-changed script-path=network-switch.js
📝 脚本API常用示例
// 读取/写入持久化存储
const value = $persistentStore.read("key");
$persistentStore.write("key", "value");
// 发起网络请求
$httpClient.get({url: "https://api.example.com/data"}, (error, response, data) => {
const json = JSON.parse(data);
$done({body: JSON.stringify(json)});
});
// 发送系统通知
$notification.post("标题", "副标题", "正文内容");
// 修改响应并完成
$done({body: modifiedBody, headers: {"Content-Type": "application/json"}});
模块系统(Module):Surge的生态扩展
Surge 模块是一种可以即插即用的配置片段,可以为现有配置添加新功能而不需要修改主配置文件。社区有大量现成的模块可以直接使用,涵盖广告过滤、去水印、解锁功能等。
从URL安装模块
「设置」→「模块」→「安装模块」→ 粘贴模块的 .sgmodule 文件 URL →「完成」。模块会自动合并到当前配置中,禁用模块只需关闭开关,不影响主配置文件。
社区推荐模块清单
Surge for Mac独有功能:网关模式
Surge for Mac 拥有一个 iOS 版本没有的杀手锏功能——网关模式(Gateway Mode)。开启后,Mac 可以作为整个局域网的透明代理网关,连接到同一 Wi-Fi 的手机、平板、智能电视等设备无需任何配置即可享受代理加速,且这些设备的流量同样会被 Surge 接管、记录和过滤。
网关模式配置步骤
- Surge → 设置 → 网络 → 开启「增强模式」
- 开启「作为 DHCP 服务器运行」
- 其他设备的网关设置为 Mac 的 IP
- DNS 设置为 Mac 的 IP
流量监控面板
Surge for Mac 提供实时流量监控面板,显示所有设备的流量走向、规则匹配情况、DNS 解析记录,是专业网络分析的利器。
常见问题排查
❌ TLS握手失败 / Certificate error
解决:检查系统时间是否准确(时间偏差会导致 TLS 证书验证失败)。确认节点服务器证书没有过期(联系 VPN07 客服更换节点)。如果是自签证书节点,在规则中对该代理单独配置 skip-cert-verify=true。
❌ 脚本执行报错 / Script timeout
解决:① 在「请求记录」→ 找到该脚本触发的请求 → 查看脚本执行日志。② 脚本超时默认 30 秒,可以在配置中增加 script-idle-timeout=60。③ 脚本中的网络请求需要绑定到 DIRECT 策略避免循环代理。
❌ MitM证书安装后仍无法解密
解决:① 确认「设置」→「关于本机」→「证书信任设置」中 Surge CA 已被完全信任(开关为蓝色)。② 确认 [MitM] 区域的 hostname 中包含了目标域名。③ 部分 App 使用证书锁定(SSL Pinning),无法被 MitM 解密,这是 App 的安全设计,无法绕过。
Surge策略组高级配置:打造完美分流体系
Surge 的策略组(Proxy Group)功能与 Quantumult X 类似但更为强大,通过合理的策略组设计,可以实现极精细的流量控制。以下是一套经过实践验证的策略组配置方案:
[Proxy Group]
# 主选择组(用户手动选择)
🚀 节点选择 = select, 🇭🇰 香港节点, 🇯🇵 日本节点, 🇺🇸 美国节点, 🇸🇬 新加坡, DIRECT
# 自动选速组(延迟最低节点)
🇭🇰 香港节点 = url-test, HK-01, HK-02, HK-03, url=http://1.1.1.1/generate_204, interval=300, tolerance=20
🇯🇵 日本节点 = url-test, JP-01, JP-02, url=http://1.1.1.1/generate_204, interval=300
🇺🇸 美国节点 = url-test, US-01, US-02, url=http://1.1.1.1/generate_204, interval=300
# 专用策略组
🎬 流媒体 = select, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇸🇬 新加坡
🎮 游戏加速 = select, 🇯🇵 日本节点, 🇸🇬 新加坡, 🇭🇰 香港节点
🛡️ 广告拦截 = select, REJECT, DIRECT
Surge DNS配置与防泄漏设置
DNS 配置是 Surge 中最容易被忽视但却至关重要的部分。不当的 DNS 配置可能导致 DNS 泄漏(真实 IP 暴露)或者国内 App 解析缓慢。
推荐DNS配置
[General]
dns-server = system, 119.29.29.29, 223.5.5.5
encrypted-dns-server = https://doh.pub/dns-query
exclude-simple-hostnames = true
use-default-policy-if-wifi-not-primary = false
国内 DNS 用腾讯/阿里,加密 DNS 防泄漏
防DNS泄漏关键设置
- • 开启 enhanced-mode-by-rule(按规则决定走哪个 DNS)
- • 走代理的域名使用代理节点解析
- • 直连域名使用国内 DNS 解析
- • 开启加密 DNS(DoH/DoT)防劫持
Surge性能优化与调试技巧
Surge 提供了丰富的调试工具,善用这些工具可以快速定位问题,同时还有一些性能优化技巧让连接更流畅。
使用「请求记录」诊断流量路由
「请求记录」是 Surge 最强大的调试工具,实时显示所有网络请求,包括:请求的域名、匹配到的规则、走了哪个策略组和节点、请求耗时。当发现某个 App 网速慢时,在这里查看该 App 的请求走了哪个节点,延迟多少,是否有连接失败。
节点健康检测与自动切换
在策略组中设置 url-test 类型,Surge 会定期(interval 秒)对策略组内所有节点发起延迟测试,自动切换到延迟最低的节点。VPN07 提供的 70+ 国家节点中,香港和台湾节点通常延迟最低(50-100ms),日本次之。
开启HTTP/2和TCP多路复用
在 [General] 中添加 http-api-web-dashboard = true 开启 Web Dashboard,通过浏览器实时查看流量统计。同时确保节点配置中开启了多路复用(如 Trojan 协议的 multiplex 选项),可以显著提升高并发场景下的性能。
VPN07配合Surge的最佳实践
💡 Surge用户推荐配置
- 协议选择:Surge 对 Trojan、VLESS+REALITY 协议支持最完善,建议优先使用这两种协议的 VPN07 节点
- 订阅格式:从 VPN07 后台下载 Surge 专用配置文件(.conf),包含完整策略组和规则,导入即用
- DNS配置:Surge 支持分区域 DNS,国内域名走运营商 DNS,国外域名走 8.8.8.8,VPN07 配置文件已预置
- 速度测试:VPN07 1000Mbps 带宽节点在 Surge url-test 策略组测速中延迟通常 60-120ms(亚太节点)
- macOS特有:启用增强模式(Enhanced Mode)可以让系统所有进程的流量都被 Surge 接管,包括那些忽略系统代理的 App