2017年6月28日星期三

Surge 新手使用指南

       Surge 新手使用指南

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 的配置文件,点击左上角的群组,可以查看和添加更多的其他配置,通过「Download Configuration from URL」也可以直接从网络下载范例配置(后缀为 .conf)。
点击 Config 主界面下方的「Edit」对配置进行修改:配置名称、日志模式(Log Level)的设定、代理服务器(Proxy)的设置、规则(Rules)的设置以及代理服务器群组(Proxy Group)。一条一条添加内容是困难的,而且对刚接触这一块的用户来说也不明所以,所以简单的方法是从网上复制一份现成配置内容下来,保存成后缀为.conf 的文本(Uncode UTF-8)文件,最后连接数据线通过 iTunes 导入到 Surge中。
> 如果在 Surge 中启用了 iCloud,通过 iTunes 连接 iPhone 后,在应用文稿中可能看不到任何文件,但是这不影响你使用 iTunes 向 Surge 复制配置文件。
通过 iCloud 同步配置文件
1.2.0 版新增了 iCloud Drive Sync 同步特性,在 Surge 中启用后可以通过 iCloud 同步配置文件,这意味着你可以在 Mac 上访问 iCloud Drive 里的 Surge 文件夹,直接将配置文件复制到这里,甚至直接在这里打开配置进行编辑,保存后 iCloud 会自动同步到 iPhone 上。
> 通过 iCloud 同步配置文件时,如果 Surge 发现正在使用的配置已经更新,Surge 自动重新启动。
如果是从网上下载的配置文件,都需要打开代理服务器的配置部分验证并输入自己的代理服务器地址、端口、用户名和密码。GoagentX 用户可以停止服务参照不同的服务器并查看具体地址。多个服务器的输入如果觉得在 Surge 软件界面中这样一条一条的操作过于繁琐,可以直接以「Edit in Text Mode」的方式在文本模式下进行编辑。
对于大多数人来说,基于范例文件编辑加上自己的服务器(Proxy)地址 Surge 就可以开始工作了。规则部分可以借鉴范例文件进行补充,规则并不是越多越好,除了利用 DNS 缓存对经常访问的网站进行加速外,仅需要补充本地 DNS 无法正常解析的域名到规则中。
* Option 中无法直接配置 Shadowsocks,需要在电脑上编辑配置文件,例如:「Proxy = custom,1.2.3.4,443,chacha20,password,http://abc.com/ss.module,ota=true」,其中 custom 不可更改,ss.module 的 URL 地址必须有效。有些 shadowsocks 服务提供商可能不支持 chacha20 加密,改成 rc4-md5。
如果您使用的是 HTTPS 代理,Surge 会校验服务器证书名称,请使用域名进行配置,不要直接使用 IP。

多个服务器配置(Proxy Group)

1.2.0 (476) 版本以后,iOS 版和 Surge Mac 的配置文件再度得到了统一,在一个配置文件中就可以方便的定义多个可供选择的服务器,用到的参数是新增加的 [Proxy Group] 。
采用 Proxy Group 的方式后,原来的「服务器配置覆盖文件」就没有必要再保留了,从旧版本升级到 1.2.0 版本时 Surge 会自动合并原有的配置,但是主界面看上去会很「简陋」,Proxy 下面空白的一片,这是因为 [Proxy Group] 的部分还没有配置多个服务器。
相对于原来的配置,新的配置中多了 [Proxy Group] 的描述字段,它和上方的 [Proxy] 是对应关系,也就是说你在 [Proxy] 字段中每行写入一个服务器,然后在 [Proxy Group] 中罗列这些服务器的定义名称,这样就能实现服务器群组的效果,方便在软件界面中实时切换。 [Proxy Group] 中罗列的服务器必须在 [Proxy] 字段进行了具体的定义,而且可用,但是反过来 [Proxy]字段中可以写很多服务器, [Proxy Group] 可以只包含其中几个。
Proxy Group 方式每个配置文件是相对独立的,可以包含各自的服务器地址和不同的规则。例如,按不同的规则的定义来命名区分成不同的配置文件,或者用不同的命名区分服务器提供商。
为了显示直观,图示服务器文件名加入了表情符号(原生拼音输入法输入香港🇭🇰)。 Dropbox 目前还不支持同步文件名包含表情符号的文件,所以如果要传到 Surge 里请使用 iTunes 或 iCloud Drive 方式。
供参考的配置文件,配置名称包含的链接可用于「Download Configuration from URL」。
Surge.conf(Auto Group)
[General]
# warning, notify, info, verbose
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
bypass-tun = 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12
loglevel = notify
[Proxy]
# 自行修改服务器地址、端口、用户名、密码
🇭🇰HK = http,1.2.3.4,443,username,password,tls=true
🇸🇬SG = custom,1.2.3.4,443,chacha20,password,http://abc.com/ss.module,ota=true
🇯🇵JP = http,1.2.3.4,443,username,password,tls=true
🇺🇸US = http,1.2.3.4,443,username,password,tls=true
[Proxy Group]
Auto = url-test,🇭🇰HK,🇸🇬SG,🇯🇵JP,url = http://www.gstatic.com/generate_204
Scene = ssid, default = Auto, cellular = 🇯🇵JP, "MOTO-3347" = 🇭🇰HK
Proxy = select, Auto,Scene, 🇺🇸US
[Rule]
# 规则部分请参照范例补充完善,此处仅示意
DOMAIN-KEYWORD,umeng.co,REJECT
DOMAIN-KEYWORD,google,Proxy,force-remote-dns
GEOIP,CN,DIRECT
FINAL,Proxy
[URL Rewrite]
^http://www.google.cn http://www.google.com.sg header
[SSID Setting]
"Apple store" suspend=true
[Proxy Group] 配置群组命名应和 [Rule] 规则中调用的一致,如:Proxy。
SG 这一行是示范 Shadowsocks 配置,例如:「Proxy = custom,1.2.3.4,443,chacha20,password,http://abc.com/ss.module,ota=true」,其中 custom不可更改,ss.module 的 URL 地址必须有效。有些 shadowsocks 服务提供商可能不支持 chacha20 加密,改成 rc4-md5
通过 URL 更新配置文件时需要注意,Surge「Download Conf from URL」下载地址要复制完整地址而不是短链方式,否则名称会被识别为短链而不是 Surge.conf。

具体配置和规则

Config 页面中点击「Edit」,滑动具体的配置内容直到 Rules 部分,点击展开即可对具体的规则进行编辑,当然在电脑上编辑规则会更方便直观一些。在 iPhone 上以「Edit in Text Mode」方式也能以文本的方式整体编辑规则,和在电脑上编辑比较就是复制和粘贴不太方便。
# 通用设置
[General]
loglevel = notify
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
ipv6 = false
[SSID Setting]
WiFi-SSID suspend = true
  • 记录日志的几种方式: verbose、info、notify、warning。默认是 notify,分析(Analytics)模块中可以查看具体的 Logs,日志对分析 Surge 的使用状况很有帮助,打开具体日志能看到 Surge 的行为和动作,如果遇到异常情况可以打开具体日志并通过右上角的分享将日志通过邮件发送给作者
  • 除非是在调试 Bug 的时候,平时请不要启动 verbose 级别的日志,因为日志需要保证完整写入,使用的是同步式地写入,性能上会有严重问题
  • IPv6 的支持,使用参数启用 IPv6 支持
  • WiFi suspend 功能,在特定 SSID 下停止 Surge。在这个 WiFi 下直接开启 Surge 不会被 suspend,只有从其他网络切换到这个网络时才会触发
# 代理设置
[Proxy] 
Proxy = http,127.0.0.1,3120,username,password,tls=true
ProxyA = socks5, server.com, 1080, username, password, tls=true
ProxyC = http,127.0.0.1,3120
ProxyD = custom,1.2.3.4,443,chacha20,password,http://abc.com/ss.module,ota=true
# Shadowsocks 配置中 custom不可更改,ss.module 的地址必须有效。
  • 可以创建多个代理服务器条目,规则中可以指定某条规则走哪个代理
  • SSLedge 使用 HTTPS,老式 APNp 用 HTTP
  • Surge 支持 HTTP, HTTPS 和 SOCKS5 的代理服务器,代理支持验证(用户名、密码)
# 规则设置
[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)的多服务器并发查询。
对于一般用户,不建议开启 DNS Override 选项 (dns-server)。第三方 DNS 不一定比 ISP 的要好,还容易造成 CDN 缓慢。

分析网络活动

Surge 分析模块中能直观看到 Surge 启动后最近地访问请求(Recent Requests)。
还可以通过规则结果测试(Rule Test Results)临时调整规则(点击某条记录),REJECT、DIRECT 或者指定它走某个代理。临时调整的规则会在停用 Surge 并再次打开 Surge 后失效。
通过规则结果测试(Rule Test Results)可以方便地跟踪当前 App 的网络访问,临时改变规则后可以观察 App 的实际运行情况,如果有效随后就能补充到主配置文件中。
在 iPad 分屏模式的使用场景中,我经常干的一件事就是打开某个国产应用,然后分屏查看 Surge 里 Test Results 的网络访问情况,侦查那些和应用功能无关的隐私或广告请求,然后记录下来添加到自己的规则列表中。更多规则设置的内容可以阅读《Surge -定制自己的规则配置
如果说 Surge 最吸引人的地方在哪里,估计就是这种透明的网络访问方式,在轻松访问各种网络服务以外还是一个强有力地调试工具。安全和隐私已经变成只有少数人才能掌控的东西,学习掌握一款这样的工具还是很重要的。

Dump Traffic to Disk

Surge 2.0 版本 Replica 已经被完全合并入 Surge 中,在设置中启动 Dump Traffic to Disk 后,所有 HTTP 协议的流量将会被抓取并存储。再也不用因为 Request 中只显示 20 条记录而担心采集不到想跟踪的 URL 了。
Dump Traffic to Disk 启用后,对应的配置文件中的 replica = 0 会变成 replica = 1,如果不想通过 Edit 来启用 Dump 模式,也可以通过修改配置文件的方式来启用它。
启动 Dump Traffic to Disk 后,请求列表中,可以直接看到图片缩略图。

启用通知中心 Widget

1.2.0 版本进一步完善了通知中心插件,并新增了服务器的测速。启用通知中心的 Widget 后,可以便捷的通过通知中心开启和关闭 Surge,并能直接切换服务器。More 设置页中能定义在通知中心显示几个服务器项。

AUTO GROUP

当 Proxy 中选择使用 Auto Group 时,Surge 会并发尝试通过该 Group 下所有的服务器去发起到目标 url 的请求,并根据最优结果选择哪个服务器将被使用。默认间隔 600 秒后需要重新发起测试,更多详细的参数介绍可以参阅这里 trello.com
  • 不建议修改默认配置中的 URL 测试地址;
  • 为保证测速的基本公平,默认 URL 目标设置的是 gstatic.com 这样的在全球都有节点的 URL 作为测试目标;
  • 基于性能考虑,只支持使用 http 协议的 URL;
  • 为了避免资源浪费,Auto Group 中不应放入太多的线路,2–3 个即可。如 US 这样的线路不应该放入,因为几乎不可能赢得测试;
  • 不要使用 google.com 作为测试目标,这么做可能导致 proxy 服务器 ip 被加入黑名单,导致各种操作需要输入验证码;
增加 Auto 自动群组后与原来的配置之间的差别
Proxy & nProxy
Proxy GROUP 和 nProxy GROUP群组的作用:Proxy(Group 1)、nProxy(Group 2),正常情况(国内直连)下 Proxy 选代理,nProxy 选 DIRECT 直连;Proxy、nProxy 都选代理服务器就是全走代理。这样配置可以方便的切换成全局代理(主要是指 Mac 版)。

Surge 2.0 配置上的变化

Surge 2.0 在功能上有了很多变化,配置文件很多部分会随着你升级自动更新,例如[URL Rewrite] 网址后自动添加上「header」,[General]字段部分自动添加 ipv6 = true、replica = 0,[Proxy] 字段部分自动给 HTTPS 代理添加「tls=true」等等。
还有些特性需要手动添加才可以,如:SSID 群组的支持、Surge-Cli 命令行的支持。
Surge 2.0 配置上的变化
上图所示 scene 所在的一行就是添加对 SSID 群组的支持,SSID-GROUP 的作用是让 Surge 根据网络环境自动切换,可以和 Auto 搭配使用。
Scene = ssid, default = Auto, cellular = SG, “SSID NAME1” = HK, “SSID NAME2” = JP
Proxy = select,Auto,Scene,JP,US
示例说明:连接到公司的 Wi-Fi “MOTO-3347”时自动选择代理(Auto),在 4G 环境下走 SS,SSID 不匹配的其他 Wi-Fi 环境里连接 JP。SSID 名称如果存在空格需要用英文引号标注。
针对 Wi-Fi 环境,还有另一个参数 SSID Setting,和上面的 SSID GROUP 参数不同,SSID Setting 用来处理的状况是遇到特定的 Wi-Fi 时关闭 Surge。
[SSID Setting]
“Apple store” suspend=true
那些场景需要用到 SSID Setting?例如,连接到行车记录仪的 Wi-Fi,或者无线路由器已经自带翻墙,这些情况下都不需要启用 Surge。SSID Setting 中可以定义 Surge 自动连接到这些网络时关闭(从其他网络切到这个 WiFi 才会触发),示例中的 Apple store 可以替换成你要定义的 Wi-Fi SSID 名称。
replica = 0
配置文件中的 replica = 0 对应是 Dump Traffic to Disk 功能,默认为 0 是不启用状态,启用后会变成 replica = 1,Dump 模式可以保存所有 HTTP 协议的访问,便于跟踪和分析。
external-controller-access = apw@0.0.0.0:6158
添加对 Surge-Cli 命令行的支持后,可以在 Mac 端运行命令行来访问 Surge,具体配置介绍可以阅读《Surge for Mac 简明指南》。

版本更新

  • 1.1.3 More 标签中摇一摇获取 Mac Beta 版本。
  • 1.2.0 (471) 版本加入 URL Rewrite 功能,用于解决 Google.cn 跳转问题。
  • 1.2.0 (476) 版本加入 Proxy Group 特性,废弃原「服务器覆盖文件方式」,解决了持续已久的 UDP 问题,Bypass-tun 设置只需保留内网段即可,不再需要加入中国段的全部 IP。
  • 1.2.0 (494) 版本加入服务器测速,修复 Cannot alloc memory 问题,界面变的更扁平化
  • 1.2.0 (497) 版本可以在通知中心切换服务器
  • 1.2.0 (508) 如果正在使用的配置文件通过 iCloud 被更新,Surge 会主动退出
  • 1.2.3 (545) 增加 Auto Group 群组,自动测速切换服务器。
  • 1.2.3 (560) Shadowsocks 协议加入 OTA 支持
  • Surge 2.0,Surge iOS 有了很多变化,具体细节可以看这里
  • Surge 2.0 (610),GEOIP 规则可以正确作用于 IPv6 和 IPv6 Mapped IPv4 地址了(解决最近微信刷新缓慢问题,之前 skip-proxy 加入的 ::ffff 可以删掉了)

常见问答

Q:为什么 Surge 一直显示是下载状态没有安装成功?
A:不能开启 Surge 的同时更新它自己,需要先停用 Surge,等更新完成后再打开 Surge。
Q:Surge 的配置文件中的服务器该如何填写?
A:Surge 是一个网络调试工具,并不提供代理服务器,需要另行购买或自行搭建服务器,具体的服务器地址和端口可以咨询服务器提供商。
Q:如何快速启动或关闭 Surge ?
A:Surge 提供了通知中心扩展 Widget,加载后由通知中心就能快速切换 Surge 状态。如果使用 Launcher 这类软件,可以通过 URL Scheme 命令`surge:///toggle`来控制 Surge 的切换,更多命令参见 surge.run
参考文章:

Surge -定制自己的规则配置

     Surge -定制自己的规则配置


在定制自己的规则之前,首先我们快速学习一下 Surge 分析模块的使用方法:通过查看 Recent Requests 中的网络访问记录,了解当前 App 的网络请求状况(因为内存占用的限制 Surge 中会显示最近 20 条请求记录),打开你想观察的 App,然后切换到 Recent Requests 界面,刷新后就能直观地看到 App 的网络访问情况。


展开 Recent Requests 中的具体条目,可以了解以下几个关键信息:
  • 具体是哪个应用发起的请求,时间戳前的方括号里显示着软件名称,(UserAgent,并不一定准确,仅供参考);
  • Policy,匹配当前配置文件中的哪一条规则,这里能看到访问是走代理(Proxy)还是直连(Direct);
  • Timing,创建连接的时长(Establishing connection) 传递时长(Transferring),通过时长可以判断连接的速度;
  • Traffic Usage,流量使用情况,下行(Download)和上行(Upload)的数据量,如果这里显示 zero,说明没有实质地联通。
了解 Recent Requests 日志记录的具体作用以后,可以有目的地跟踪某个应用的网络访问。感觉某个应用的网络访问出现问题时也建议优先到这里来判断。

规则列表中的最后两项

规则列表中只有必要的一些域名或 IP,大多数时候 Recent Requests 记录的 Policy 部分,能看到的是规则配置文件最后两项判断:
  • DIRECT(GEOIP CN → DIRECT),域名判断结果如果是中国走直连;
  • Proxy(FINAL → Proxy),兜底规则,前面规则判断完还没明确的基于这条规则走代理。
从这里也能看出规则表的自定义中,至少要保留最后一条「FINAL,Proxy」规则体系才是完整的,而倒数第二条国别判断可以根据你所在的国家进行修改。

Recent Requests 记录和规则添加

规则按照顺序从前往后执行,根据规则判断后的行为(REJECT、DIRECT、Proxy)决定是拒绝、直连还是走代理。
每条具体的 Recent Requests 记录能告诉我们很多信息。例如,请求的具体软件是哪一个,连接采用的 HTTP 方法是 GET(请求数据)还是 POST(提交数据),由 Proxy Server 模块处理的连接显示是 HTTPS,由 TUN Interface 处理的连接显示则是 TCP(IP 地址的连接)。


展开具体的 Recent Requests 记录(点击记录展开和收缩),我们能看到匹配的具体规则是哪一条,如果是上述提到的最后两个判断,可以考虑是否需要添加新的规则。
规则添加中我们会用到的几种判断方式:判断域名(DOMAIN)、域名后缀(DOMAIN-SUFFIX)和关键词(KEYWORD)。关键词的覆盖面是最广的当然也很容易导致误判,其次是域名后缀,最准确的是基于完整域名的判断。
根据 Recent Requests 记录添加基于域名的规则是最准确的,但是很多时候软件公司有多个二级域名,例如:m.360buy.com、api.360buy.com、log.360buy.com,如果用域名匹配的规则要写 3 条,但是换成域名后缀的方式 1 条 360buy.com 就能涵盖。
少数情况下需要添加基于 IP 地址的规则,如果请求的是主机名(Hostname),需要在规则后加上「 no-resolve」,告诉 Surge 不要去尝试解析来匹配这条规则,只处理「直接 IP 访问」的请求。
最后,在正式将规则加入到配置文件之前,建议先在规则结果测试(Rule Test Results)里找到具体的规则,临时调整规则(点击某条记录选择 REJECT、DIRECT 或 Proxy)观察一下对现在运行的 App 是否有影响。
网上分享的规则配置大多数是根据各自使用情况添加完善的,并不一定具有普遍适应性。
借鉴他人的配置文件,可以将其复制到 Numbers 中进行排序,这样能有效检查出重复条目,Gist方式分享的配置文件中可以从网站右侧选择「Revisions」查看版本变动情况。

Force-remote-dns 选项

Force-remote-dns 选项主要是为了解决有些域名在本地查询有障碍的问题(如公司内网域名)。
当域名带有 force-remote-dns 选项时,Surge 会直接返回一个 240.1.x.x 的 fake IP 并反向查出真正的域名是什么,避免本地的 DNS 查询动作。
这样虽然避免了本地 DNS 可能带来的干扰问题,但是因为返回了一个 fake IP,而 Surge 没有权限去强制清除系统或者应用的 DNS cache,所以在 Surge 关闭后可能导致一些问题,所以请谨慎的只给确实需要的域名开启这个选项。

「SKIP PROXY」和「BYPASS TUN」

配置文件最开始的几行,也是高级选项中的两项设置「SKIP PROXY」和「BYPASS TUN」目的是用来解决一些应用的兼容性问题。
通过指定具体域名(apple.com或者*apple.com)或者 IP(192.168.2.* 或 192.168.2.0/24)让这类请求绕过 Surge 代理服务器和 TUN 接口。因为 Surge 启用后整个系统只有 TCP based 的协议可以使用,UDP 和 ICMP 等其他协议将被丢包(DNS 除外),对于部分国内的使用 UDP 的应用 (微信语音、小蚁摄像头),可以用 bypass 掉所有国内 IP 的方式来解决兼容问题(范例配置文件中已经包含)。
Bypass-tun 之后对应 IP 地址的访问就不再走 Surge 了,所以规则中基于 IP 地址的规则如果已经被 Bypass-tun 中的地址段覆盖会无效。
SKIP PROXY 里域名或IP会直接跳过代理,当然也意味着它们不走规则判断。日志里我们经常会看到 Surge 自己发送到 e.crashlytics.com (统计 Crash 的工具, Twitter 旗下的 Crashlytics 服务)的网络请求, 这个不建议 REJECT ,但是又不想在 Recent Requests 记录里看到它,可以把它加入到「SKIP PROXY」。
skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local, e.crashlytics.com

合理使用 REJECT 规则

规则中添加 REJECT,可以用来拦截隐私和广告请求,但是有些应用会无限制的尝试重新连接。
由于 REJECT 速度很快,这会导致 Surge 短时间内收到大量请求,最后因为内存使用过多被系统 Kill。
同样因为 Surge 在内存使用上的限制,不建议创建过多的规则。

直连和代理都能联通的情况

很多服务直连或者代理都可以访问,访问速度主要取决于你连接的网络运营商或代理服务器,两者速度差不多的情况下没有必要单独添加规则来指定究竟是走代理还是直连。
Recent Requests 具体记录的 Timing 部分是可以看到连接响应的时长,通过这里可以有针对性的判断哪些服务走代理,哪些走直连。不过切换不同的代理服务器以后这里的数据也会随之变化,白天网络流量高峰期和晚间也会有差别。

规则定制是一个可大可小的坑,建议结合自己的使用环境适度调整和定制,保持手机应用环境的良好是根本的解决之道,不必要的、功能重复的、免费国产的(特别是游戏类)应用少装或者不装。
本文档适用于:Surge 1.2.0(Bulid 508)
内容制作软件:Ulysses、OmniGraffle
https://medium.com/@scomper/surge-%E5%AE%9A%E5%88%B6%E8%87%AA%E5%B7%B1%E7%9A%84%E8%A7%84%E5%88%99%E9%85%8D%E7%BD%AE-34a6d74b0434