Surge TestFlight Feed @surgetestflightfeed Channel on Telegram

Surge TestFlight Feed

@surgetestflightfeed


该频道用于提供关于 Surge iOS/Mac/tvOS 的最新 beta 版本信息

Surge TestFlight Feed (Chinese)

Surge TestFlight Feed 是一个专门提供 Surge iOS/Mac/tvOS 最新 beta 版本信息的频道。对于喜欢尝试最新版本的用户来说,这个频道将是一个不可或缺的资源。Surge 是一款功能强大的网络代理工具,帮助用户保护隐私并畅游互联网。通过订阅 Surgetestflightfeed,用户可以第一时间了解到最新的测试版本,体验最新功能和改进。无论是 iOS、Mac 还是 tvOS 用户,只要加入该频道,即可享受到最前沿的 Surge 技术带来的便利和体验。如果你是一位热爱尝鲜的用户,那么快来加入Surge TestFlight Feed,体验最新版本的魅力吧!

Surge TestFlight Feed

25 Dec, 04:58


Surge Mac Beta 更新日志
新增选项 icmp-forwarding,默认开启
在开启增强模式时,为了降低对用户的干扰,Surge 会对所有 ICMP 数据包进行直接转发,这样不影响用户使用 ping 等工具。
但是这可能导致部分极端追求隐私保护的用户产生 IP 泄露,因此新增 icmp-forwarding 选项,可用于关闭该行为。

Surge TestFlight Feed

25 Dec, 04:39


关于 DNS 泄露

我们之前已经科普过 IP 泄露相关知识,近期又收到很多关于 “DNS 泄露” 与 “DNS ECS” 的问题。由于 “DNS 泄露” 在业界并没有一个统一且严格的定义,这里先归纳出两种常见情形,并分别说明其成因和应对措施:

所谓 DNS 泄露可以指:

1. 指的是在使用传统明文 DNS 时,链路中的运营商、防火墙、公共 Wi-Fi 提供者等都可能直接截获或监视你的 DNS 查询数据包,得知你访问的网站域名。

解决方法:
- 使用加密的 DNS 服务器(如 DoH)
- 使用全局代理模式,或者优先匹配的代理规则,使得不在本地进行 DNS 解析即可。

虽然理论上存在风险,然而实践中由于现在 app 存在大量网络请求,同时云服务器交叠复用,除非涉及的网站域名十分小众,否则也很难从 DNS 请求记录中获得有效信息。

2. 指的是访问的目标网站或者使用的 App自身通过技术手段,检测访问者的真实 IP。

具体技术原理是,构造一个随机的二级域名,通过 DNS 查询中的 ECS 机制,获取到查询者的 IP 地址,以此突破访问者的代理保护获得其实际 IP 地址。

但是,这种检测方法存在诸多不确定性,即使成功,也只能获取到用户的区域,而非真实 IP。

解决方法:
- 使用全局代理模式,或者优先匹配的代理规则,使得不在本地进行 DNS 解析即可。
- 使用不支持 ECS 的 DNS 服务器,如 CloudFlare 的 1.1.1.1。
- 自定义 DNS ECS 字段,提供虚假的 IP 地址也可以解决这个问题,但可能导致 CDN 调度混乱,出现解析错误、访问缓慢或完全连不上的情况。

Surge TestFlight Feed

23 Dec, 07:04


我们在 iOS 3415 / macOS 3160 build 中,加入了一项针对 Snell V4 的优化,有望解决 Telegram 偶尔出现卡顿的问题,待观察是否确实有效。

Surge TestFlight Feed

20 Dec, 09:05


命名已调整为更合适的 Port Forwarding

Surge TestFlight Feed

20 Dec, 08:02


Surge Mac Beta 更新日志
新功能:端口转发 Port Forwarding
配置样例

[Port Forwarding]
0.0.0.0:6841 localhost:3306 policy=SQL-Server-Proxy

第一个参数为本地监听端口,第二个参数为转发目标,policy 参数选填,如果不填的话将使用标准代理匹配决定策略

该功能常见于使用 SSH 连接服务器 MariaDB 等开发调试场景。

Surge TestFlight Feed

12 Dec, 04:30


Surge iOS & Mac Beta 更新日志
优化了使用 Smart Group 作为 underlying-proxy (代理链)的表现,在先前的版本中由于架构问题,使用 Smart Group 作为一个代理策略的 underlying-proxy 时,Smart Group 无法发挥全部特性(如动态备用策略切换)。新版本中已经完全解决了这些问题。

注:部分用户询问 Snell 的 reuse 机制在 Smart Group 组中无法使用的问题,请注意这是特意进行的限制,因为 reuse 机制启动的情况下,Smart Group 无法准确评估该代理的表现,同时会导致备用策略切换无法正常运作。

Surge TestFlight Feed

05 Dec, 04:02


最近的版本中我们暂停了新功能的开发,着重于处理一些遗留的低概率崩溃和内存泄露问题。目前最新的版本中相关问题都已得到了修正,是目前最稳健的一个版本,将于近日发布正式版本。

什么是内存泄露

简单说就是应用因为任何原因,向系统申请了一段内存后未正确释放,导致应用所使用的内存越来越高。

对于 Surge iOS,如果出现持续的泄露,内存占用会不断逼近系统限制,导致被终止重启。对于 Surge Mac,可以观察到内存占用不断提高。

内存泄露问题在计算机科学上一直是一个难题,即使是 iOS/macOS 的系统程序和内置应用,也经常会出现内存泄露的现象。这次修正的数个内存泄露问题也都十分隐蔽,比如当脚本使用 $httpClient 请求数据时,如果 H2 服务端在发送了部分数据后主动中断了该 stream,那可能会导致缓存的部分数据未能被正确释放,这种问题几乎只会在请求特定服务器时才会发生,所以难以被发现。

为此我们重新设计了新的内存泄露检测系统,用于分析这些低概率泄露问题,目前的表现相当良好,崩溃报告系统的数据显示,自 Mac 5.9.2 版本开始已经没有任何用户再遇到过可观测的内存泄露。

Surge TestFlight Feed

26 Nov, 07:41


我们依然经常会收到关于 Surge iOS 电耗问题的问询,再次解释一下该问题

1. 除非频繁触发脚本,否则 Surge 不会对电量消耗产生明显的影响。
2. 系统的电耗统计,对于 NE 类程序是不准确的,不应该以此作为参考。
3. 除开不准确,部分用户会因为电耗统计中 Surge 所占用百分比很高而认为 Surge 非常耗电。请注意该统计中的百分比,指的是这段时间内的电量消耗中 Surge 的占比,而非表示 Surge 消耗了如此多的电量。由于 Surge NE 常驻后台,如果这段时间内没有几乎没有使用过设备,那即使 Surge 只消耗了极少的电量,也会被统计为 100%。

我们也会定期测试最新版本 Surge 是否存在电量异常的情况,使用 5.14.1 版本在 iPhone 12 mini 上反复进行测试(仅 Wi-Fi),从剩余电量 100% 开始 24 小时后,无论 Surge 是否开启,剩余电量均为 72-74%,几乎属于测量误差范围。

Surge TestFlight Feed

11 Nov, 08:26


关于空密码的提示
接到部分用户反馈关于在代理协议中使用空密码的问询,为此对该问题进行一定说明:
1. “空密码”可以指代密码不存在(即为 null),或者是一个空字符串(即 '/0')。目前对应的 Surge 配置语法为,不配置 password 字段,或者 password=""。
2. 除了少数特例,绝大多数加密协议都不支持 null 密码,但是几乎所有协议都支持空字符串密码(因为密钥派生允许空字符串输入)。但是即使使用空字符串密码,也不会略过加密流程,性能与使用其他密码一致,等同于一个弱安全性密码。
3. 大部分协议都没有对这种情况进行特别注明。且在 UI 进行编辑时,并没有办法区分这两种情况。

因此,Surge 将在后续版本中统一关于空密码的处理行为,仅在部分明确不使用加密的协议中支持 null 密码(如 SS 的 none 模式),不再支持空字符串密码,请注意。

Surge TestFlight Feed

11 Nov, 03:35


Surge iOS Beta 更新日志
- 调整了 UI 编辑规则和代理策略的逻辑,现在即使是 UI 上不存在的配置参数,在编辑后如果类型不变,也可以保持了
- 调整了 FSI 错误的处理,增加 workaround,不再直接终止
- 对于不存在 Virtual IP 的 TCP 连接,现在在握手阶段就会直接阻断,不用再等到握手完毕。ICMP ping 也会响应 host unreachable
- 修正部分提示无法被转为横幅显示的问题
- 其他细节修正

Surge TestFlight Feed

08 Nov, 06:57


Surge Mac Beta 最新版本在状态栏图标加入了出站模式指示,如果不需要可在外观设置中关闭

Surge TestFlight Feed

05 Nov, 03:17


提示
我们的客服邮箱 [email protected] 向 @icloud.com 域所回复的邮件,最近几日经常被拒绝,原因不明,如需联系请换用其他邮箱,请见谅。

Surge TestFlight Feed

04 Nov, 06:43


补充
- HTTP API /scripting/evaluate 新增 argument 参数

Surge TestFlight Feed

04 Nov, 05:47


Surge iOS Beta 更新日志
- 脚本编辑页面支持传入 $argument
- 在脚本列表页面执行脚本也会传入 $argument 的内容了
- 脚本的 $trigger 参数新增 "editor" 和 "http-api" 两个来源
- 修正 iOS 16 下 WireGuard 可能无法使用的问题
- 修正部分代理协议的流量统计中,未计算上传的 UDP 流量的问题

Surge TestFlight Feed

01 Nov, 02:43


Surge Mac 5.9.0 版本已正式发布,iOS 与 tvOS 5.14.0 版本已在 App Store 正式发布。

Surge TestFlight Feed

31 Oct, 03:28


Surge Mac 5.9.0 与 iOS 5.14.0 已进入 RC 阶段,iOS 版本由于审核的一些离谱原因,默认图标更换为了 5.0 图标,如果想使用经典图标请手动修改。

Surge TestFlight Feed

28 Oct, 03:41


Surge Mac & iOS Beta 更新日志
- 修改 HTTP 脚本的终止逻辑,如果需要打断请求,应使用 $done({abort: true}),除此之外的失败将对请求不做修改而不会终止
- 修正 Body Rewrite 规则的处理逻辑,如果遇到非 UTF-8/非 JSON 请求,行为修改为不做修改而非失败
- 优化 QUIC 流控,降低在上传测速时出现的内存占用

Surge TestFlight Feed

27 Oct, 09:46


Surge Mac 更新日志
- UDP 整体架构进行重构,UDP 相关功能可能出现问题,如有遇到请回报。
- shadowsocks 协议支持配置 udp-port 参数,用于单独指定 UDP 模式的服务端端口号,可在使用 ShadowTLS 时使用原端口号。

Surge TestFlight Feed

27 Oct, 06:47


以及 WireGuard

Surge TestFlight Feed

27 Oct, 06:40


该问题可能影响所有使用 QUIC 类代理协议的用户,同时包含 DoQ 和 DoH3

Surge TestFlight Feed

27 Oct, 06:38


根据一些用户的回报,我们发现在支持 hysteria2 的端口跳跃时,对 QUIC 在网络切换时进行的优化,可能会在网络切换时触发系统 Bug,导致 Surge iOS 有概率在切网后所有的连接均超时。(系统路由表紊乱)
最新 TF 版本中移除了该优化,请有遇到这类问题的用户测试确认问题是否改善。

Surge TestFlight Feed

24 Oct, 07:57


同时请求 Timing 日志中加入了 Body Rewrite 阶段的耗时统计

Surge TestFlight Feed

24 Oct, 07:34


Surge Mac & iOS Beta 更新日志
- 新的订阅功能
Body Rewrite 支持使用 JQ 表达式对 JSON 进行操作

http-response-jq ^http://httpbingo.org/anything '.headers |= with_entries(select(.key | test("^X-") | not))'

JQ 表达式说明详见:https://jqlang.github.io/jq/

Surge TestFlight Feed

21 Oct, 09:01


关于 Pre-matching REJECT 的说明已加入到手册中:https://manual.nssurge.com/policy/reject.html

Surge TestFlight Feed

20 Oct, 04:15


Surge Mac & iOS Beta 更新日志
- 增加 pre-matching 标记规则的校验,在不支持的规则上配置该标记将直接产生配置错误。(请注意 PROTOCOL 语句不可用,逻辑规则的子规则也会被校验,但是 RULE-SET 的子规则若不支持仅会该子规则不生效而不会报错)
- 对 TCP RST 拒绝方式增加了全局防御,当 3 秒内触发 100 次后,将临时暂停以避免应用死循环导致 CPU 异常,同时输出日志
- pre-matching 的请求日志,由每 30 分钟一条,下调至 5 分钟
- [iOS] 为 iOS 18.1 下,Poor Network Quality 无法被从通知中心自动消除的问题加入了一个 workaround

Surge TestFlight Feed

19 Oct, 14:34


Surge Mac Beta build 2975 已实现该功能

Surge TestFlight Feed

19 Oct, 14:33


REJECT-NO-DROP 改进
接到部分用户回报,在用于去广告等用途时,如果 DNS 返回 NXDOMAIN/No Record 可能导致应用等待,而返回 127.0.0.1 会使得应用立刻认为请求失败。

出现该区别的原因,是因为应用开发者对于不同错误的处理逻辑不同。然而在 DNS 中返回 127.0.0.1 进行屏蔽,是一项非常不标准的行为,本质是将请求导向了回环网络 lo0,由本地系统产生一个 TCP refused 响应拒绝请求。

1. 如果本地系统上正好监听了访问的端口,会导致对应监听服务收到该请求,产生非预期结果。
2. 如果被屏蔽的应用重试逻辑非常暴力,由于 connect 127.0.0.1 会被系统极快的拒绝,可能导致 CPU 占用 100%。(即手机发热)

为此 Surge 提供了一个全新的解决方案,对于使用 REJECT-NO-DROP 的请求,Surge DNS 将固定返回特殊 IP 地址 198.18.0.244。对于该地址的所有 TCP 请求,将由 Surge VIF 产生 TCP refused,同时当发现往该地址的 TCP SYN 极高时,进行丢包处理以避免引发高 CPU 占用。

这种处理方式既保留了返回 127.0.0.1 的优点,同时消灭了可能导致的副作用。如果在使用 REJECT 时,出现了 app 等待过长的问题,可尝试使用 REJECT-NO-DROP。

Surge TestFlight Feed

19 Oct, 14:04


更新中加入了对代理模式接管的请求的 pre-matching 处理,REJECT 行为是进行 TCP RST,DROP 行为是将 socket 挂起。

Surge TestFlight Feed

19 Oct, 13:43


关于 Pre-Matching 功能的一些补充说明:
1. Pre-Matching 规则的 REJECT 策略依然有意义,对于 REJECT/REJECT-NO-DROP 策略,TCP 请求会在 SYN 时立刻收到 TCP RST(客户端表现为 Connection refused),DNS 请求会收到 No Record 响应。
而对于 REJECT-DROP 策略,TCP 的 SYN 包与 DNS 查询包将被直接丢弃,不做任何响应。
REJECT 同样会在一定频次后(30 秒内 50 次触发),自动升级为 REJECT-DROP。
除有明确的特殊需求外,建议使用默认的 REJECT,没必要主动使用 REJECT-DROP。

Surge TestFlight Feed

19 Oct, 07:48


相比最初版本进行了修订,不再限制 DOMAIN 类型不带有 extended-matching 标记, 不再限制 IP 类型一定需要 no-resolve 标记。
Surge Mac Beta Build 2971 已经可以开始测试该机制。

Surge TestFlight Feed

18 Oct, 15:35


新的订阅功能 Pre-matching
(Mac 版本不需要订阅)

用于描述使用 REJECT 策略的规则,如

[Rule]
DOMAIN,ad.com,REJECT,pre-matching

被标记了 pre-matching 的规则,将在正常的规则匹配流程前就提前生效,因此该规则相当于拥有最高优先级。

该功能的意义是,由于 Surge 的规则系统可判断的内容非常多,所以规则判定需要在收到首个 TCP 数据包后才可以进行,对于应对风暴请求或者去广告需求,产生了过多不必要的开销。

所有被标记了 pre-matching 的规则将会被提取出来进行优先匹配,在 DNS 解析与 TCP SYN 阶段就执行判断。若 DNS 域名命中,则直接返回 No Record,若 TCP SYN 阶段命中,将直接产生 ICMP REFUSED 响应,大量请求时升级至丢包,UDP 同样处理。

同时,对于每条规则,每 30 分钟仅会在最近请求列表中出现一次,避免因为大量请求刷屏。

可以使用 pre-matching 标记的规则类型有:

- DOMAIN 类型:DOMAIN,DOMAIN-SUFFIX,DOMAIN-KEYWORD,DOMAIN-SET,DOMAIN-WILDCARD。
- IP 类型:IP-CIDR,IP-CIDR6,GEOIP,IP-ASN。
- 逻辑规则:AND,OR,NOT
- 其他:SUBNET,DEST-PORT,SRC-PORT,SRC-IP

RULSET 也可以使用,但是其内容同样受到上述限制。

举例来说,对于最近米家 App 的疯狂请求,就可以靠配置

[Rule]
DEST-PORT,5222,REJECT,pre-matching

在低开销的情况下进行屏蔽。

注:未续订的情况下,该标记不会影响 Surge 开启,只是会无法生效,避免造成干扰。

--------------
以上内容为设计草案,有待修改。

Surge TestFlight Feed

18 Oct, 12:08


根据用户报告和反复测试,仅配置 2000::/3 路由对该特定 app 的 IPv6 请求问题的没有作用,下个版本将回滚代码取消该参数。
请尽量不要使用 ipv6-vif=always

Surge TestFlight Feed

18 Oct, 08:21


加入了一项 workaround,现在 ipv6-vif-route-mode 参数可以正确产生作用了

Surge TestFlight Feed

18 Oct, 07:22


由于一些 NE 的系统限制,ipv6-vif-route-mode 参数未能按预期工作,下个版本将提供其他替代参数

Surge TestFlight Feed

18 Oct, 07:07


有用户询问新参数与 ipv6-vif 参数的关系,ipv6-vif 参数控制是否开启 Surge VIF 的 IPv6,而 ipv6-vif-route-mode 控制在开启 IPv6 VIF 后的路由配置模式。
也就是说只有在,ipv6-vif=auto/always 下,ipv6-vif-route-mode 参数才有意义。

Surge TestFlight Feed

18 Oct, 06:14


Surge Mac & iOS Beta 更新日志
新增参数 `ipv6-vif-route-mode`,可选值为 auto、default、gua、manual

- default
配置 Surge VIF 为 default 路由,即先前版本中的工作模式。
- gua
仅配置 2000::/3 的路由,即只对 Global Unicast Address IPv6 地址生效。
- manual
应配合 tun-included-routes 参数使用,Surge 默认不再加入任何路由
- auto (默认选项)
让 Surge 自己决定工作模式

增加该选项的原因是因为,部分用户希望使用 IPv6 VIF 接管一些特定的请求,因此配置了 ipv6-vif=always,但是这会导致微信和其他一些应用认为当前系统存在有效的 IPv6 因此优先尝试,但是由于实际上本地并不存在有效的 IPv6 网络,需要等待出现错误后再回退到 IPv4。

配置为 gua 工作模式,由于不存在 IPv6 的 default 路由,所以不会让这类软件判定 IPv6 可用,但是依然能正确接管 IPv6 请求。

Surge TestFlight Feed

16 Oct, 12:50


Surge iOS Beta 更新日志
- 新增 HTTP Capture 的控制中心开关
- 支持使用 Ponte 策略作为 underlying-proxy

Surge TestFlight Feed

16 Oct, 07:09


Surge iOS Beta 更新日志
- 策略组列表视图支持配置自定义图标
- 修正带行尾注释的 DNS Mapping 项目无法在 UI 显示的问题
- 在全局模式下,若原选中策略不存在,将回退至第一个代理,而非 DIRECT

Surge TestFlight Feed

15 Oct, 11:04


Surge Mac & iOS Beta 更新日志
修改 SIP023 Identity 参数的配置方式为在 password 中使用 : 分隔,不再使用 identity 字段,与其他客户端相一致

Surge TestFlight Feed

15 Oct, 09:00


关于 Shadowsocks 2022 的性能表现:
- 在延迟上,与原版完全相同
- 在吞吐量上,原版中限制单个 AEAD 加密 chunk 最大长度为 16383(0x3FFF),与 TLS 协议的 record 最大长度一致,而 SS-2022 为 0xFFFF。这导致在进行 iperf 等极端压力测试的情况下,SS-2022 的表现会更好。但是 chunk 长度过大可能导致解密延迟(因为必须接收完毕整个 chunk 的数据才可以开始解密)。不过在正常使用中,基本都属于可以忽略不计的区别。

Surge TestFlight Feed

15 Oct, 07:57


Surge Mac & iOS Beta 更新日志
新的订阅功能:Shadowsocks 2022 加密协议支持
- 支持 2022-blake3-aes-256-gcm 与 2022-blake3-aes-128-gcm 两种模式
- UDP 转发同样需要配置 udp-relay=true
- 可配置 identity 参数以使用 SIP023 Shadowsocks 2022 Extensible Identity Headers,目前仅支持配置一层

Surge TestFlight Feed

10 Oct, 04:04


Surge 配置提示
在协助部分用户排查问题时,发现用户配置了过多的 DNS 记录(13000+)。如此多的内容会导致内存与性能问题。
由于 [Host] 段内容支持通配符且有先后顺序,无法进行索引优化,所以匹配的性能很低,因此并不建议在这里配置过多内容,也没有必要。(百条量级的话开销可忽略不计)
如果是为了区分解析,请参考白皮书,应正确配置规则系统确保解析在代理服务器发生,而非在本地进行解析。
如果是为了广告屏蔽,请使用 REJECT 规则。

Surge TestFlight Feed

10 Oct, 03:11


Surge Mac & iOS Beta 更新日志
- [iOS]部分用户的网络存在异常,IPv6 的路由会被不断配置与清除,导致在 ipv6-vif=auto 的情况下 Surge 需要不断重新配置 VPN。该版本加入了一个 workaround,在同一个网络下,如果 IPv6 路由在存在的情况下又被清除,也不再重置 VIF 状态。
- 优化了加密 DNS 的错误处理逻辑,在遇到错误时将立刻进行重试