前段时间曾哥找到我,说他女儿用的 iPhone 手机更新了一个 APP 后发现很不好用,想回到旧版本,但是好像没有办法,第一,iPhone 的 App 的官方下载通道就只有一个,那就是 App Store;第二,虽然可以通过第三方辅助工具(iTools、PP助手、爱思助手等)导入 ipa 文件进行安装,但是在那个 App 官网上并没有提供旧版本的安装文件下载。怎么办?

  其实方法是有的,而且不需要 iPhone 越狱,直接从 App Store 官网渠道下载,神奇吧!但是操作过程有些繁琐,个人认为可能不适合电脑小白,当然你也可以试着操作。本文将介绍如何使用iTunes下载安装App Store任意版本旧程序。技术贴,需要大家耐心阅读,理解实现原理,一步一步操作,不熟悉的话可能需要花费1-2小时的时间。

实现原理

1、iOS软件下载必须使用自己的Apple ID登录itunes,才能在iPhone上安装。
2、通过抓包软件查找App的历史版本ID。
3、通过抓包软件修改下载请求,将请求中最新版本的ID改成历史版本ID,成功下载指定版本App。

操作步骤

主要分为以下三步:
1、下载安装itunes、fiddler,设置fiddler并安装证书。
2、找到想要下载APP版本对应的版本ID。
3、找到版本ID后,修改下载请求,下载安装。

第一步、准备工作

1.1 下载安装itunes、fiddler

下载安装iTunes,熟悉使用iTunes的App Store。
下载安装Fiddler(官网下载、或者百度搜索Fiddler安装、交流群可下载)

Windows 8 以上系统建议安装Fiddler for .NET4,win7也建议安装Fiddler4。

iPhone 下载旧版本 APP

1.2 设置Fiddler

打开 Fiddler,选择菜单栏 -> Tools -> Fiddler Options,在 HTTPS 选项卡中勾选 Decrypt HTTPS traffic,然后重启Fiddler。

iPhone 下载旧版本 APP

1.3 安装Fiddler证书

如果在Fiddler的使用过程中,提示Certificate Error证书错误,可以选择Yes忽略错误或者安装证书,教程请参考附录。

1.4 关于教程图

本文配图均为高清1:1配图,看不清的清点击图片看大图,或再查阅原图。

第二步、查找版本ID

以UC浏览器为例,需要下载10.7.11版本,含有视频缓存下载功能。

2.1 打开iTunes,搜索要下载的App

iPhone 下载旧版本 APP

2.2 点击下载或更新,等右上角出现箭头后删除下载

选中下载按2次Delete键即可删除。(如果不小心下载了,可以点下载或更新上面的图标,刷新页面,等按钮灰置之前,马上点击更新)

iPhone 下载旧版本 APP

2.3 在Fiddler查找相关请求

找到pxx-buy.itunes.apple.com、URL开头为 /WebObjects/MZBuy.woa 的请求,双击请求切换右侧至 Inspectors 选项卡,并点击中间的黄色块(Response is encoded and may need to be decoded before inspection. Click here to transform.)
备注:如果相关https请求表现为Tunnel to(灰色文字),需要检查证书是否成功安装、HTTPS设置是否打开,再不行就下载步骤1.3的版本。

iPhone 下载旧版本 APP

2.4 保存该请求

第3步找到请求后,右键请求 -> Save -> Response -> Response Body。需要注意的是,如果没有点击黄色方块,将会保存一个乱码文件。

iPhone 下载旧版本 APP

2.5 寻找App版本列表

可以拖拽到浏览器中打开该文件,搜索找到 softwareVersionExternalIdentifiers,其后一系列数字为该APP历史版本号。
从上往下为该 App 自第一个版本起每个版本在 App Store 中的版本 ID。

iPhone 下载旧版本 APP2.6 模拟请求查找版本

将第3步找到的请求,拖拽至Fiddler右侧Composer栏。
在Request Body中找到appExtVrsId位置,编辑右侧数字内容即版本号。版本号从第5步中从后几个id中挑选。如把图中816384552替换成813819687。
最后点击右上角Execute按钮。(如果出现左侧红色图标,则在左下角黑色框输入bpu取消断点)

iPhone 下载旧版本 APP

2.7 确认ID对应的版本号

左侧列表底部找到新请求,点击展开Inspectors页面,点击黄色块。
右侧面板,下面一栏,切换到TextView,搜索bundleShortVersionString,可找到ID对应版本号。
如刚才输入的ID是813819687,查询出对应的版本是10.7.11。如果版本不正确,可重复第6步一次寻找。
最终确认要下载的版本ID,如10.7.11版本要UC的视频缓存功能。

iPhone 下载旧版本 APP

iPhone 下载旧版本 APP

第三步、下载APP

3.1 拦截下载请求

确认需要下载的版本ID后,复制。例如,下载UC浏览器10.7版本的ID为814450049。
在 iTunes 中重新搜索App。
然后切换到Fiddler,清空请求(快捷键CTRL+X),在左下角黑色输入框输入命令打开断点 bpu MZBuy.woa 回车(取消断点为输入bpu)

iPhone 下载旧版本 APP

返回 iTunes, 点击下载或更新。

3.2 修改下载请求

回到 Fiddler 后会出现红色图标的请求,点击请求显示Inspectors栏。
在TextView窗口,找到appExtVrsId 位置,下一行数字及为当前下载的版本ID。
编辑版本 ID 为需要下载的版本 ID,如上面查询到的814450049。

iPhone 下载旧版本 APP

3.3 确认下载

最后点击绿色按钮(Run to Completion)发送请求,进行下载。
下载过程中需要保持 Fiddler 和 iTunes 一同打开,不关闭。
如果长时间下载没反应,先暂停下载,点击Fiddler左下角Capturing取消拦截请求,再继续下载即可。

3.4 下载安装

App下载可在itunes右上角查看进度。
完毕后,切换到应用界面,右键打开下载文件所在文件夹,找到.ipa安装包,在常用的软件(PP助手、iTools)中安装即可。

iPhone 下载旧版本 APP

iPhone 下载旧版本 APP

相关问题

1、Fiddler安装证书

如果在Fiddler的使用过程中,提示Certificate Error证书错误,请选择Yes 或 根据以下步骤安装证书:
Fiddler 菜单栏 > Tools > Fiddler Options > HTTPS 选项卡
点击左下方的 Export Root Certificate to Desktop按钮
桌面上会出现一个“FiddlerRoot.cer”文件,右键安装证书
安装证书的位置选择第二项,并点击“浏览”,选择“信任的根证书存储”。

iPhone 下载旧版本 app

iPhone 下载旧版本 app

iPhone 下载旧版本 app

2、iTunes打开白屏怎么办?

Fiddler和itunes同时打开的情况下,可能会搜索不出来,页面白屏。

(1)把Fiddler设置成不拦截请求:点击Fiddler左下角Capturing按钮,按钮消失即为不拦截。
(2)在itunes进行搜索。
(3)点击Fiddler左下角Capturing按钮,将拦截按钮显示,即可正常看到请求。

iPhone 下载旧版本 app

3、Fiddler找不到itunes的请求怎么办?

一直不出现itunes的请求的话,可能版本不对或者证书没装上,建议安装Fiddler4,然后重装证书,应该可以出现。

iPhone 下载旧版本 app

4、不能创建证书提示fiddler2 unable to generate certificate怎么办?

在创建证书的时候,如果提示fiddler2 unable to generate certificate,无法导出安装证书,将会导致https的包无法解开。
比较简单的解决方案是安装下载这个程序 fiddlercertmaker。
https的请求由灰变蓝即可。
具体提示如下:

---------------------------
Unable to Generate Certificate
---------------------------
Creation of the interception certificate failed.
makecert.exe returned -1.
Results from C:\Program Files\Fiddler2\MakeCert.exe -ss my -n
"CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by
http://www.fiddler2.com" -eku 1.3.6.1.5.5.7.3.1 -r -cy authority -a
sha1
Error: Can't create the key of the subject ('JoeSoft')
Failed
-------------------------------------------

5. 如何关闭Fiddler请求拦截

在开着Fiddler的时候,itunes可能会出现提示重新登录或者登录失败的情况(连不上服务器),解决方案为将Fiddler取消请求拦截,itunes登录之后,Fiddler再进行请求拦截。具体切换操作如下:点击Fiddler左下角Capturing按钮即可,再点击即可打开。

iPhone 下载旧版本 app