美文网首页技术重塑
利用 Charles Proxy 下载旧版本 iOS App【转

利用 Charles Proxy 下载旧版本 iOS App【转

作者: Detailscool | 来源:发表于2016-12-03 21:04 被阅读806次

    想法

    最近滴滴在 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」(图中「I这里」的位置),这将自动打开 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 的代理工具,方法肯定也是大同小异的。像 Surge 貌似是只能捕获请求并不能编辑,就不太能完成这个操作。无论如何 Charles 只是其中一种选择。

    Enjoy!

    (不要尝试了 QQ 1.0 在我们现有的设备上都打不开)

    *2016.11.14 更新:感谢各位支持,最近思考了一下能不能直接在 iOS 上完成这个操作,而不需要通过 iTunes 同步,因为本身 Charles 支持接管 iOS 流量,和 Surge 也是很类似的。但是很遗憾,由于 iTunes Store 类软件在 iOS 上用了特殊网络加密,不会由于系统信任证书来信任 Charles 的伪造中间人,而 Surge 采用了 TUN 原理所以强制成功。对于 Charles 的 SSL Proxy 其他 iOS 上的 App 都可以,说明 Apple 别有用意保证用户 App Store 安全。故大家还是需要麻烦一点通过 iTunes 来做这个操作。

    转自:利用 Charles Proxy 下载旧版本 iOS App

    相关文章

      网友评论

      本文标题:利用 Charles Proxy 下载旧版本 iOS App【转

      本文链接:https://www.haomeiwen.com/subject/tomapttx.html