Mac下使用iTunes下载iOS应用的任意历史版本

随着国内版权环境走上正轨以及各公司日渐迫切的商业化需求,我们发现很多“良心”应用已经慢慢地变得不那么良心了。

这时候我们就需要回到应用的某个“良心”版本,对于安卓用户来说,安装一个历史版本很简单,只要搜到一个apk安装包就行了。然而iOS用户就没那么幸运了,正常情况下,从appstore下载的应用是应用的最新版本,无法指定版本。

既然说正常情况下,那是不是应该有非正常情况呢?

今天,给大家介绍一种使用iTunes下载iOS应用的任意历史版本的方法。操作在MacOS上进行,不过主要操作在windows上是一样的。

首先,我们需要两个工具:

1.抓包工具 charles
2.iTunes(这不废话么)

这两个工具的下载和安装就不多说了,网上教程有很多。


一、charles配置


1.检查charles 能否正常工作

首先退出所有代理软件,打开charles和浏览器,随便进入一个网站,观察 charles中是否出现访问记录,如果没有请检查所有代理是否已退出,包括浏览器的代理插件。同时确认chales菜单栏的proxy下的MacOS proxy前是否打勾。

2.配置charles https抓取支持

由于iTunes的访问请求都是https的,所以需要配置https支持。

首先安装charles的ssl证书,点击 Help -> SSL Proxying -> Install Charles Certificate

Mac下使用iTunes下载iOS应用的任意历史版本_第1张图片
安装证书



系统会自动打开钥匙串,找到下图中的三项:


信任charles证书

默认情况下三项都带有红叉,也就是不被系统信任的。

我们右击证书,显示简介,在信任里将“使用系统默认”改为“始终信任”,然后关闭。过程中需要输入系统管理员密码,输入下就好了。

三项证书都修改完成后,关掉钥匙串。


二、iTunes准备工作

要想下载应用的历史版本,我们先要获得它的版本信息。这里我们以获取“追书神器” 2.25.1版本为例。

我们打开iTunes,在商店搜索“追书神器”并下载,当开始下载后停止下载,并连按“Delete”删除任务.

Mac下使用iTunes下载iOS应用的任意历史版本_第2张图片



接着在charles里找到包含 /WebObjects/MZBuy.woa的记录。

Mac下使用iTunes下载iOS应用的任意历史版本_第3张图片


我们选中该行记录,并将filter下方的选项栏由overview切换到contents,发现下面的内容全是乱码。没关系,我们只需要再为charles配置下启用https抓包的站点。

先记录下我们刚抓到的记录中的Host,如图中的“p50-buy.itunes.apple.com”。接着打开charles菜单栏下proxy里的SSL Proxying Settings,勾上enable SSL Proxying,点击下方"Add",在弹出框内填入Host及Port:443,单击OK保存退出。

Mac下使用iTunes下载iOS应用的任意历史版本_第4张图片
添加站点



完成上述工作后,为了防止混淆,我们使用charles中间一排按钮中的扫帚形状按钮清理下之前的记录。


Mac下使用iTunes下载iOS应用的任意历史版本_第5张图片
清理记录


重新在iTunes里下载追书神器,再次找到相关记录。这次contents里终于不再是乱码了。

Mac下使用iTunes下载iOS应用的任意历史版本_第6张图片



接下来是找到我们需要的版本信息了,"CMD + F"搜索 softwareVersionExternalIdentifiers

Mac下使用iTunes下载iOS应用的任意历史版本_第7张图片
搜索'softwareVersionExternalIdentifiers'



双击标红的那一行,会跳到我们所需的信息处。

Mac下使用iTunes下载iOS应用的任意历史版本_第8张图片

图中一大串“xxxxxxxxxx”的项目就是应用在appstore中的版本id,从上到下版本由旧到新。我们需要将这些版本号记录下来。


三、修改请求参数下载应用指定版本

首先我们需要拦截iTunes的下载请求。在我们刚才的记录上右击,选择Breakpoints,这样就添加了一个断点。

Mac下使用iTunes下载iOS应用的任意历史版本_第9张图片
添加断点



清理下记录,再次下载“追书神器”。这时请求会被拦截并hold住,charles也会自动弹出断点操作窗口,我们在这里编辑请求信息。
Mac下使用iTunes下载iOS应用的任意历史版本_第10张图片
找到请求信息

找到 appExtVrsId项,将下面string内的值改为你要下载版本对应的版本id。比如我要下载的2.25.1版本对应的id是817743478,就改为817743478。

注意:版本对应的id可能需要多次尝试才能找到,这个没有捷径,只能一个一个试。

Mac下使用iTunes下载iOS应用的任意历史版本_第11张图片
替换"appExtVrsId"



修改完成后点击下方的Execute,之后还会有一次来到断点,这次直接点击Execute。

打开iTunes,在你会发现下载的应用的版本已经是你指定的了,最后的工作就是安装到手机上了。

Mac下使用iTunes下载iOS应用的任意历史版本_第12张图片
app版本

提示:不用的时候要关闭charles或取消之前设置的断点,否则每次iTunes下载应用的时候都会被拦截。

你可能感兴趣的:(Mac下使用iTunes下载iOS应用的任意历史版本)