Matrix 是少数派的全新产品,一个纯净、小众的写作平台,我们主张分享真实的产品体验,有实用价值的互联网领域经验、思考。欢迎忠于写作,喜好分享的朋友参与内测。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
本文内容仅代表作者本人观点,文章对标题和排版略作修改,原文链接。
想法
最近滴滴在 App Store 上架了「新版Uber」众所周知,这个版本简直就是老掉牙的 Uber + 滴滴的 UI,解压.ipa 文件,你甚至可以直接发现滴滴的 Logo,内部文件结构和滴滴自己的 App几乎没有差异…… 而大洋彼岸真正的 Uber 公司却是发布了真正的新版 Uber,不仅界面简化美观,同时整合多家互联网公司服务,让你可以在路途看终点附近的餐馆,电影院,甚至直接订票。
我得知 Uber 公司发布更新后,便立即准备升级,然而我却发现 Uber 已经在中国区 App Store 消失,我终于转而在已购项目下载到了更新,很遗憾我却收到了以下提示。
新版 Uber 已经无法在中国使用,但我发现我为了升级这个版本丢掉了 Uber 的老版本,而我已经没有办法下载老版本了,难道我真的要像现在每一个还在使用老版本 Uber 的用户一样,收到提示,并升级滴滴版的「新版Uber」吗?
当然不。接下来这篇文章将告诉你如何下载任意版本的任意 iOS App,即降级。
请注意,接下来的教程较长,且较为复杂,如果看文章不太清楚,可看视频版本。第一次操作可能需要你十分钟时间,熟悉后就非常轻松了。
准备工作
你所需要的东西非常简单:
- iTunes (什么?你没有?)
- Charles Proxy (点击下载)
你下载的 Charles Proxy 为 30 天试用版本,安装后你将看到如下界面,这是一个 10 秒的等待系统告诉你你正在使用使试用版本。
另外,边看视频教程边操作可能会更简单更节约时间。
Youtube: 利用 Charles 下载旧版本 iOS App
优酷: 利用 Charles 下载旧版本降级 iOS App
接下来你会收到这样的提示:
请点击 Grant Privilege 并输入管理员密码,这将自动为系统配置代理设置以启用 Charles 服务。
你便可以看到左边开始滚动显示你的网络流量了,先不管它。Charles Proxy 使用 Men in the Middle (MitM) 来监视你的 HTTPS 协议,因此它需要证书。(如果你配置过 Surge MitM 那你已经很熟悉了)接下来我们需要先处理证书的问题:
注意。这步非常重要,如果你使用 iTunes 12 或以上版本,此步失败将导致 iTunes 不验证 SSL 服务器身份阻止你下载
Windows 通过证书方法请参照英语官网方法:Using Charles
在你的顶部 Bar 中找到 Help,SSL Proxying,点击「Install Charles Root CA」(图中这里的位置),这将自动打开 macOS 钥匙串访问,你需要再次输入管理员密码。
双击打开(你的电脑上可能会有红色 X 图标)
将第一项「使用此证书时」改成始终信任,后面的会自动修改,然后关闭小窗口,并再次输入管理员密码保存。
接下来请退出 Charles,我们稍后再打开它来处理。
开始下载
打开 iTunes,在 App Store 中找到你所想要降级的 App,这里以 LoveLive! 学园偶像祭举例。
找到这个界面了吗?很好,现在我们重新打开 Charles,等待 10s 进入界面之后,点击 iTunes 上的下载。
当你看到左边有「p 数字 - buy.itunes.apple.com」的时候,请前往 iTunes 取消下载,因为你实际上并不需要下载它。
右键点击「p 数字 - buy.itunes.apple.com」,找到「Enable SSL Proxying」并点击。然后回到 iTunes 刷新界面(可以重新搜索,也可以直接 Cmd+R)再次点击下载,然后再次取消。(听起来很奇怪不是吗😂,不过没有问题)
你惊奇地发现刚才的地址可以展开了,而且可以找到一个叫做 buyProduct 的东西,我们点开它。
在右边两个 XML 中,下边的那个里面找到比较底部的含有一大堆数字的项目「softwareVersionExternalIdentifiers」直译过来就是「软件版本识别号码」,这就是每个版本所对应的版本 ID。从小到大为从最旧的版本到最新的版本,也就是说这个 App 最新版本的 ID 是「818014617」,1.0 版本是「401463784」。
如果你要下载它最早的版本,那么直接使用第一个 Integer 就可以了。但是如果要下载中间的一个版本怎么办呢?你可能需要对照 App 更新列表来找到你要的版本,并且不断尝试……此问题也困扰了我很久。
好的,现在我们找到了版本 ID,以 1.0 即 401463784 举例。现在我们再次右键「p 数字 - buy.itunes.apple.com」,在刚刚 Enable SSL Proxying 的下方找到 Breakpoint:断点并勾选它。再次返回 iTunes 刷新并再次点击下载。
Duang!Charles 突然弹了出来!因为你刚刚设置了断点,iTunes 再次请求的时候 Charles 给了你一个暂停时间的功能,这个时候下面的 Cancel 就是忽略,Abort 就是阻止,Execute 就是执行。如果我点击 Abort,你会发现 iTunes 弹出窗口显示下载未完成,未知错误。那是因为你拒绝了它的 buyProduct 下载。
闲话不多说,我们选择顶上「Overview」旁边的「Edit Request」,并在 Cancel Abort 和Execute 的上方选择 XML Text。
顶部有一个叫做 appExtVrsID 的项目,将它的值直接修改成我们需要的版本 401463784。然后点击底下的 Execute。接下来还会有几次弹窗,不需要做任何操作,直接 Execute 即可。
恭喜!这次下载的版本就是你所需要的老版本。下载完毕后可能还会有几次 Breakpoint,直接 Execute 即可,然后便可以关闭 Charles(如果你之前就关闭了 Charles,不影响)连接上你的 iPhone, iPad 或 iPod touch 将其同步进入设备即可。
脚注:其实并不一定需要用 Charles,任何支持修改 POST 请求 HTTPS 的代理工具,如 Proxifier 也可以做到,方法肯定也是大同小异的。像 Surge 貌似是只能捕获请求并不能编辑,就不太能完成这个操作。无论如何 Charles 只是其中一种选择。
Enjoy!
*2016.11.14 更新:感谢各位支持,最近思考了一下能不能直接在 iOS 上完成这个操作,而不需要通过 iTunes 同步,因为本身 Charles 支持接管 iOS 流量,和 Surge 也是很类似的。但是很遗憾,由于 iTunes Store 类软件在 iOS 上用了特殊网络加密,不会由于系统信任证书来信任 Charles 的伪造中间人,而 Surge 采用了 TUN 原理所以强制成功。对于 Charles 的 SSL Proxy 其他 iOS 上的 App 都可以,说明 Apple 别有用意保证用户 App Store 安全。故大家还是需要麻烦一点通过 iTunes 来做这个操作。
你可以在 Charles 官网 下载 Charles,有 Mac、Windows 和 Linux 版本,售价 20 美元,可 免费试用。
原文可获取应用下载链接:利用 Charles Proxy 下载旧版本 iOS App | Matrix 精选
喜欢少数派?欢迎关注我们的微博:@少数派sspai ,微信公众号: sspaime
少数派( http://sspai.com )