2017.10 更新:iTunes 12.7 移除了 App Store 功能,该教程无法适用于 12.7 及以上的版本,需要在 IPSW Downloads 或其他网站下载旧版本 iTunes 完成操作。Mac 下请参考「悄悄发布的 iTunes 12.6.3,让你在电脑上管理 iOS 11 设备的 App」文章降级。你也可以使用 Apple Configurator 2 安装现有 ipa 文件,无需降级 iTunes 即可完成。

针对以上更新内容,我制作了新版视频教程。该视频对 Windows 和 Mac 用户友好,并详细介绍了 Windows 下 SSL 证书签名的方式和 iTunes 12.7 问题的解决方案及 Apple Configurator 2 安装 ipa 文件的方法,请点击链接在 YouTube 观看。

而 Apple 专门发布了兼容 iOS 11 的并包含 App Store 功能的 iTunes 12.6.3 版本,在这里跳转 Apple 支持官网下载该版本。

想法

最近滴滴在 App Store 上架了「新版Uber」 众所周知,这个版本简直就是老掉牙的 Uber + 滴滴的 UI,解压.ipa 文件,你甚至可以直接发现滴滴的 logo,内部文件结构和滴滴自己的 app 几乎没有差异…… 而大洋彼岸真正的 Uber 公司却是发布了真正的新版 Uber,不仅界面简化美观,同时整合多家互联网公司服务,让你可以在路途看终点附近的餐馆,电影院,甚至直接订票。

我得知 Uber 公司发布更新后,便立即准备升级,然而我却发现 Uber 已经在中国区 App Store 消失,我终于转而在已购项目下载到了更新,很遗憾我却收到了以下提示。

354343.jpg新版 Uber 已经无法在中国使用,但我发现我为了升级这个版本丢掉了Uber的老版本,而我已经没有办法下载老版本了,难道我真的要像现在每一个还在使用老版本Uber的用户一样,收到提示,并升级滴滴版的「新版Uber」吗?

当然不。接下来这篇文章将告诉你如何下载任意版本的任意iOS App,即降级。

请注意,接下来的教程较长,且较为复杂,如果看文章不太清楚,可看视频版本。第一次操作可能需要你十分钟时间,熟悉后就非常轻松了。

准备工作

你所需要的东西非常简单:

  • iTunes (什么?你没有?)
  • Charles Proxy (点击下载

你下载的 Charles Proxy 为30天试用版本,安装后你将看到如下界面,这是一个10秒的等待系统告诉你你正在使用使试用版本。

另外,边看视频教程边操作可能会更简单更节约时间。

YouTube: https://www.youtube.com/watch?v=XVejjUG9xUo

YouTube 新版: https://www.youtube.com/watch?v=0-fwIDoeqtU

优酷: http://v.youku.com/v_show/id_XMTgxNTMxMTY0NA==.html

chales1.png接下来你会收到这样的提示:

Chales2.png

请点击 Grant Privilege 并输入管理员密码,这将自动为系统配置代理设置以启用 Charles 服务。

chales1st.png

你便可以看到左边开始滚动显示你的网络流量了,先不管它。Charles Proxy 使用Men in the Middle (MitM) 来监视你的HTTPS协议,因此它需要证书。如果你配置过Surge MitM 那你已经很熟悉了,接下来我们需要先处理证书的问题:

注意 这步非常重要 如果你使用 iTunes 12 或以上版本 此步失败将导致 iTunes 不验证 SSL 服务器身份阻止你下载。

Windows 通过证书方法请参照英语官网方法 https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

Windows 用户还可以参照 YouTube 新版教程,对 Windows 的 SSL CA 安装做了出详细步骤解释。也可自行搜索「添加 cer(或 p12)文件至系统根信任证书」

chalssl.png在你的顶部 Bar 中找到 Help,SSL Proxying,点击「Install Charles Root CA」(图中「I这里」的位置),这将自动打开 macOS 钥匙串访问,你需要再次输入管理员密码。

chlca.png

双击打开(你的电脑上可能会有红色 X 图标)

chalca2.png

将第一项「使用此证书时」改成始终信任,后面的会自动修改,然后关闭小窗口,并再次输入管理员密码保存。

接下来请退出 Charles,我们稍后再打开它来处理。

开始下载

打开 iTunes,在 App Store 中找到你所想要降级的 App,这里以 LoveLive! 学园偶像祭举例。

itunesdefault.png找到这个界面了吗?很好,现在我们重新打开 Charles,等待10s进入界面之后,点击 iTunes上的下载。

buyitunes.png

当你看到左边有「p数字-buy.itunes.apple.com」的时候,请前往 iTunes 取消下载,因为你实际上并不需要下载它。

右键点击「p数字-buy.itunes.apple.com」,找到「Enable SSL Proxying」并点击。然后回到 iTunes 刷新界面(可以重新搜索,也可以直接 Cmd+R)再次点击下载,然后再次取消。(听起来很奇怪不是吗?,不过没有问题)

buyproduct.png

你惊奇地发现刚才的地址可以展开了,而且可以找到一个叫做 buyProduct 的东西,我们点开它。

chalmanyv.png在右边两个 XML 中,下边的那个里面找到比较底部的含有一大堆数字的项目「softwareVersionExternalIdentifiers」,这就是每个版本所对应的版本 ID。从小到大为从最旧的版本到最新的版本,也就是说这个App最新版本的ID是「818014617」,1.0版本是「401463784」。

新版教程中教你使用 Workflow 指定任意版本,直接获得该版本 App External Version ID,在这里下载该条 Workflow,并可在 YouTube 查看具体使用方法。

如果你要下载它最早的版本,那么直接使用第一个 Integer 就可以了。但是如果要下载中间的一个版本怎么办呢?你可能需要对照App更新列表来找到你要的版本,并且不断尝试……此问题也困扰了我很久。

好的,现在我们找到了版本 ID,以 1.0 即 401463784 举例。现在我们再次右键「p数字-buy.itunes.apple.com」,在刚刚Enable SSL Proxying 的下方找到 Breakpoint:断点并勾选它。再次返回iTunes刷新并再次点击下载。

breakpoint1.pngDuang!Charles 突然弹了出来!因为你刚刚设置了断点,iTunes 再次请求的时候 Charles 给了你一个暂停时间的功能,这个时候下面的 Cancel 就是忽略,Abort 就是阻止,Execute 就是执行。如果我点击 Abort,你会发现 iTunes 弹出窗口显示下载未完成,未知错误。那是因为你拒绝了它的 buyProduct 下载。

闲话不多说,我们选择顶上「Overview」旁边的「Edit Request」,并在 Cancel Abort 和 Execute 的上方选择 XML Text。

edit.png

顶部有一个叫做 appExtVrsID 的项目,将它的值直接修改成我们需要的版本 401463784。然后点击底下的 Execute。接下来还会有几次弹窗,不需要做任何操作,直接 Execute 即可。

success.png

恭喜!这次下载的版本就是你所需要的老版本。下载完毕后可能还会有几次 Breakpoint,直接 Execute 即可,然后便可以关闭 Charles(如果你之前就关闭了 Charles,不影响)连接上你的 iPhone, iPad 或 iPod touch 将其同步进入设备即可。

enjoy.png

Enjoy!