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

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 的错误处理逻辑,在遇到错误时将立刻进行重试