Surge 是基于 iOS 9 的新特性 Network Extension 开发的一款网络调试工具,工作原理是使用 Packet Tunnel Provider 给系统套上一个代理,Surge 有两个主要组件:Surge 代理服务器和 Surge TUN 接口。程序运行之后,Surge 会将自身设置为默认的 HTTP/HTTPS 代理服务器来处理所有的 HTTP/HTTPS 流量。针对一些不服从系统代理设置(如 Mail.app )的应用程序 ,将由 Surge 的 TUN 接口来进行处理。
Surge 会接管全局的(几乎)所有通信,所以所有网络方面的电量消耗都会被算在 Surge 头上,实际上 Surge 的运行功耗很少,使用中也不会感到 Surge 对电量有明显影响。
添加配置文件
打开 Surge,默认包含有一个 Default 的配置文件,点击右上角的编辑(Edit)可以打开了解配置文件的基本结构:日志模式(Log Level)的设定、代理服务器(Proxy)的设置以及规则(Rules)的设置。
一条一条添加内容是困难的,而且对刚接触这一块的用户来说也不明所以,所以简单的方法是从网上复制一份现成配置内容下来,保存成后缀为.conf 的文本(Uncode UTF-8)文件,最后连接数据线通过 iTunes 导入到 Surge中。
配置文件中服务器的部分需要填写,如果不知道服务器的地址和端口是多少,不妨打开 GoagentX 停止服务后选择不同的服务器并查看具体地址,你既可以直接在 Surge 中填写,也可以直接编辑 .conf 配置文件最后再导入到 Surge。
对于大多数人来说,基于范例文件编辑加上自己的服务器(Proxy)地址 Surge 就可以开始工作了。规则部分可以借鉴范例文件进行补充,规则并不是越多越好,除了利用 DNS 缓存对经常访问的网站进行加速外,仅需要补充本地 DNS 无法正常解析的域名到规则中。
如果您使用的是 HTTPS 代理,尽量设置 SSL 加密(Cipher)以减少内存占用,推荐 GCM 模式加密算法,例如:TLS_RSA_WITH_AES_128_GCM_SHA256。
使用单独的服务器配置文件
配置文件的 Proxy 部分可以写入多个服务器地址,Surge 会将当前命名为「Proxy」的地址作为当前使用地址,这种方式每次想切换代理服务器时比较麻烦,例如我想使用香港代理服务器,需要找到 HK 条目,并将现有「 Proxy = 」中的 Proxy 改成别的名字,然后将「 HK = 」中的 HK 改成 Proxy,说起来都比较绕。
多个服务器切换更简单的方式是单独写「服务器配置覆盖文件」,在这种覆盖文件中只需要指向自定义配置的主文件(如图示中HK(HKG3).conf 第一行),然后写上服务器地址的部分(Proxy 定义部分)即可。
主文件(如,Main.conf)是个独立的标准文件,所以其中 Proxy 部分是必须的,服务器覆盖配置文件(如,HK.conf、TYO.conf)中只写一个服务器地址,并且这个地址不需要和 Main.conf 的中 Proxy 部分形成对应关系,如果你打算使用 5 个服务器切换,Main.conf 的 Proxy 部分可以写 1 ,然后其他覆盖配置文件里分别写 2、3、4、5 的地址,在 Surge 主界面中选中哪个使用哪一个。(点击示范代码名称后的链接下载配置文件范例,导入后修改服务器地址、端口、用户名和密码部分)
Main.conf (for SSLEdge)
|
|
Main.conf (for ShadowSocks)
|
|
#!PROXY-OVERRIDE:Main.conf
[Proxy]
Proxy = https,2.2.3.5,6556,username,password
#!PROXY-OVERRIDE:Main.conf
[Proxy]
Proxy = https,3.2.3.6,15560,username,password
通用设置
loglevel = notify
bypass-system = true
skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local
bypass-tun = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
dns-server = 8.8.8.8, 8.8.4.4
代理设置
[Proxy]
Proxy = https,127.0.0.1,3120,username,password,cipher
ProxyA = socks5,127.0.0.1,3129
ProxyC = http,127.0.0.1,3120
规则设置
[Rule]
基于域名判断并屏蔽(REJECT)请求
DOMAIN,pingma.qq.com,REJECT
基于域名后缀判断屏蔽(REJECT)请求
DOMAIN-SUFFIX,flurry.com,REJECT
基于关键词后缀判断走代理(Proxy),强制不尊重系统代理的请求走 Packet-Tunnel-Provider
DOMAIN-KEYWORD,google,Proxy,force-remote-dns
基于域名后缀判断请求走直连(DIRECT)
DOMAIN-SUFFIX,126.net,DIRECT
Telegram.app 指定“no-resolve”Surge 忽略这个规则与域的请求。
IP-CIDR,91.108.56.0/22,Proxy,no-resolve
判断是否是局域网,如果是,走直连
IP-CIDR,192.168.0.0/16,DIRECT
判断服务器所在地,如果是国内,走直连
GEOIP,CN,DIRECT
其他的走代理
FINAL,Proxy
```
规则配置的高级选项中,「Force Remote DNS」的作用主要是用来解决本地 DNS 解析受到污染的问题,在添加针对 Google、Twitter 的规则时可以开启。
规则按照顺序执行,注意不要出现先后矛盾的地方,同一个域名或后缀的规则定义不要重复,使用文本编辑器编辑时注意每条规则间的分隔逗号是英文标点。
高级设置中的选项
最右侧的图是分析模块中的统计(Statistics)数据,可以直观的看到当前连接(Surge 断开后统计重置)的时长以及Wi-Fi 和蜂窝移动网络的流量使用情况。
主配置文件设置高级选项中的「Bypass System Related」不要关闭,Surge 通过这个开关和内置规则放行系统层面的通讯请求。如果禁用此选项,它可能会导致一些系统问题,如推送通知的延迟。
高级选项中的其他两项设置「SKIP PROXY」和「BYPASS TUN」是为了解决一些应用的兼容性问题,通过指定具体域名(apple.com或者apple.com)或者 IP(192.168.2. 或 192.168.2.0/24)让这类请求绕过 Surge 代理服务器和 TUN 接口。
Skip Proxy 和 Bypass TUN 的功能与原理(By @Blankwonder )
Surge 能作为 DNS Client 使用,「DNS OVERRIDE」中填写的 DNS 地址将覆盖缺省的 DNS,针对较差的网络环境 Surge 能进行更高频率地重发,并同样适用于蜂窝数据网络,支持设置中(如:119.29.29.29,223.5.5.5,114.114.114.114)的多服务器并发查询。
分析网络活动
Surge 分析模块中能直观看到 Surge 启动后最近地访问请求(Recent Requests)。
还可以通过规则结果测试(Rule Test Results)临时调整规则(点击某条记录),REJECT、DIRECT 或者指定它走某个代理。
通过规则结果测试(Rule Test Results)可以方便地跟踪当前 App 的网络访问,临时改变规则后可以观察 App 的实际运行情况,如果有效随后就能补充到主配置文件中。
在 iPad 分屏模式的使用场景中,我经常干的一件事就是打开某个国产应用,然后分屏查看 Surge 里 Test Results 的网络访问情况,侦查那些和应用功能无关的隐私或广告请求,然后记录下来添加到自己的规则列表中。
如果说 Surge 最吸引人的地方在哪里,估计就是这种透明的网络访问方式,在轻松访问各种网络服务以外还是一个强有力地调试工具。安全和隐私已经变成只有少数人才能掌控的东西,学习掌握一款这样的工具还是很重要的。
常见问答
Q:为什么 Surge 一直显示是下载状态没有安装成功?
A:不能开启 Surge 的同时更新它自己,需要先停用 Surge,等更新完成后再打开 Surge。
Q:修改配置文件中的规则后会立即生效吗?
A:不会,需要到 Surge 中停止(Stop)后重新开始(Start)。
Q:Surge 的配置文件中的服务器该如何填写?
A:Surge 是一个网络调试工具,并不提供代理服务器,需要另行购买或自行搭建服务器,具体的服务器地址和端口可以咨询服务器提供商。
Q:如何快速启动或关闭 Surge ?
A:Surge 提供了通知中心扩展 Widget,加载后由通知中心就能快速切换 Surge 状态。如果使用 Launcher 这类软件,可以通过 URL Scheme 命令
surge:///toggle
来控制 Surge 的切换,更多命令参见 surge.run。Q:网上分享和供参考的配置中为什么规则都不一样 ?
A:配置文件中 [Rule] 的部分可以根据各自的使用环境进行定制,合并或借鉴时注意不要前后冲突或重复即可。
Surge 是一款开发者调试和代理工具,需要一定的专业背景知识才可使用,请在仔细阅读 AppStore 说明且理解软件功能后再进行购买。
后续版本可能还会有功能、界面上的变化,如有必要本文会进行补充和更新。
本文档适用于:Surge 1.0.1(Bulid 300)