利用 Charles Proxy 下载旧版本 iOS App

想法

最近滴滴在 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: https://www.youtube.com/watch?v=XVejjUG9xUo

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

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

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

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

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

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

在你的顶部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)再次点击下载,然后再次取消。(听起来很奇怪不是吗:joy:,不过没有问题)

你惊奇地发现刚才的地址可以展开了,而且可以找到一个叫做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!

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章