由于遭到微博方面以「不正当竞争」为由发起的诉讼,VVebo 作者在2022年9月17日宣布了停止该软件的后续维护和支持。VVebo 从苹果应用商店下架后,只能从已购项目中下载,而版本号也停留在了2022年9月5日发布的3.3.31。

虽然没有了更新,但 VVebo 依然可以正常使用。直到最近,用户时间线不能正常显示了。而本文,就是讲如何利用 HTTP 重写,找回 VVebo 的用户时间线。

由于我使用的代理软件是 Stash,所以本文所有的操作和代码都是基于它。

首先打开 Stash 的 MitM 功能,生成 CA 证书,然后安装和信任。在 VVebo 中随便操作一下,然后返回 Stash 的检视 DNS 列表,我们可以发现跟微博 API 相关的域名:api.weibo.cn。将它加入到 MitM 的域名列表中,再返回 VVebo,并访问其他用户主页。此时的 Stash 检视 HTTP 请求列表如下:

检视 HTTP 请求列表

根据微博 API 的文档可以发现,/statuses/user_timeline 就是获取用户微博的接口。文档中注明接口升级后只能获取当前登录用户的微博,而从实际测试来看,无论是其他用户,还是当前用户,均无法获取到数据。

但是从请求的 URL 中可以发现,指定的 UA 包含有 Weibo_intl 字符串,所以 VVebo 应该是调用了微博轻享版(原微博国际版)的接口。在微博轻享版中访问其他用户主页,在检视 HTTP 请求列表中可以发现是调用了 /profile/statuses/tab 这个接口。

于是我们的解决思路就有了,将请求的接口改写为 /profile/statuses/tab,并将新接口返回的数据,改造成旧接口的格式。

利用 Stash 的覆写功能,可以很方便的修改配置文件的部分内容。我将修复用户时间线的代码,以覆写文件的形式托管在 GitHub 上。只需要将其添加到 Stash 中,并打开脚本功能,就能找回 VVebo 的用户时间线了。

启用覆写之后,打开 VVebo,就能正常地访问其他用户的主页和个人主页。如图:

VVebo 个人主页

利用这种方法,如果之后其他接口有变动,也可以恢复 VVebo 的相应功能。VVebo 虽然一年多没有更新,但我认为它依然是最好的微博客户端。