Watt Toolkit censorship circumvention explained

解释 Watt Toolkit 的审查规避

介绍

Watt Tookit 是一个使用 C# 编写的自由软件,原名 Steam++ ,辅助 Steam 主程序的功能就不再详细描述了,关键在于由于你国特色互不联网的发展,这类工具不得不演变出所谓“加速”功能,即 GFW 审查规避,一开始只是对 Steam 商店、社区,后来又加入了 Twitch 、Origin,再后来甚至和游戏没啥相关的 Pixiv 、Discord 和 GitHub 都有了。

程序主界面

自我审查

那么最近发生了什么?

该软件最近移除了对 Pixiv 和 Discord 的“加速”支持。打开 issue 区一看

  • 所以官方把Pixiv加速删了?
  • 加回pixiv的加速吧
  • P站和discord链接怎么不见了
  • 🧐[Question] pixiv加速选项消失
  • 🧐[Question] 11月24日星期五,怎么突然访问不了pixiv呢
  • 🧐[Question] 把discord的加速删了吗?

那么他是怎么删的呢?从评论来看安装旧版本也是找不回来的,而且它也已经半年没发布新版本了。

使用 Proxyman 拦截获知这个配置是远程获取的,获取 JSON 格式的配置的 cURL 请求如下:

1
2
3
4
5
6
echo -n "BQAAGYcBAAAA8u77L3Du20gAAAAAAAAAACAAAAAQAAAAAA==" | base64 -d | \
curl 'https://api.steampp.net/accelerator/projectgroups' \
-X POST \
-H 'Content-Type: application/x-memorypack' \
-H 'Accept: application/json' \
--data-binary @-

回复是这样

解码

基于猜测,我对这份配置中的一些设置项做一些解释:

  • MatchDomainNames: 用于匹配发往什么 域名/URL 的请求需要处理。
  • ForwardDomainNames: 该设置下的域名被作为实际连接到的 IP 。这些 IP 必须能够提供对应域名的内容,比如它可以是 SNIProxy 。
  • IgnoreSSLCertVerification: 全部都是 true 的,即不进行 SSL 验证。
  • FakeServerName: 发送时设定的 SNI 扩展中的 ServerName ,与上一项协同使用就实现了域前置。在很多行中都是空的。
  • ProxyType: 大多数值为0,少数为1。暂时不清楚是干什么的。

其中,MatchDomainNames 许多是以 rmbgame.net 结尾的域名,我猜测该域名由运营者控制。还有一些以 steam302.xyz 结尾,这是偷的另一个工具 steamcommunity 302 的服务器吧。

对实现的评论

总而言之,该软件:

对于 DNS 污染,将连接所用的 IP 指定到由运营者自身控制的域名上面,再通过运营者自身的 DNS 设定,优选出未被审查的 IP 供连接。这种方法优点是切换和控制方便,缺点是不够自由,需要依赖长久维护的私有域名。

对于深度包检测,剔除或修改 TLS 连接中的 Server Name Indication 扩展,使审查者无法分类流量。这是十分流行且有效的方法,缺点是依赖于目标网站的向后兼容性,比如 Arkoselabs 使用了 Cloudflare ,不接受 无/修改 SNI 就不行了 (#2208) 。

对于 IP 封锁,因为其用于处理 DNS 污染方法的特性,这条已经顺带解决了。

其他评论

Watt Toolkit 本身不算正经的审查规避软件,“网络加速”只是其许多功能之一。看得出来其目标用户只是中国游戏玩家,对政治不感兴趣的那些,而非活动人士,或许正因为其“非政治性”才吸引了许多用户,以及规避了赵弹打击。这让我想起了 FastGithub,从原理和风格都很相似。

刚才发现后者已经删库了,记得他还在自述文件中针对你国流行的用于处罚翻墙的《国际联网暂行规定》作出解释,当时只觉得好笑,现在我的评价是今后都得拉清单:不管是传统的 VPN 或者代理,还是域前置或者 desync ,只要让中国人访问到了被中共封锁的网站,“都是违法行为”。

对该软件用户说的话

该软件能“加速”某网站与否全部取决于运营者远程下发的配置文件,这是不自由,也是不方便的。对与目前其移除了对 pixiv 和 Discord 的配置的现状,我建议您迁移到正经的审查规避软件。比如:

  • Accesser
  • GoodbyeDPI
  • TCPioneer

他们的配置文件都在本地,可以自行设定,对规避原理的介绍也更加明了。