美文网首页为了更好的活着
Mac下使用iTunes下载iOS应用的任意历史版本

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

作者: 星空雪雨 | 来源:发表于2017-04-09 20:44 被阅读195次

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

    这时候我们就需要回到应用的某个“良心”版本,对于安卓用户来说,安装一个历史版本很简单,只要搜到一个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

    安装证书

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


    信任charles证书

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

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

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


    二、iTunes准备工作

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

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


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

    <br />

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

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

    添加站点

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


    清理记录

    <br />

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


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

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


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


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

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

    添加断点
    <br />
    清理下记录,再次下载“追书神器”。这时请求会被拦截并hold住,charles也会自动弹出断点操作窗口,我们在这里编辑请求信息。
    找到请求信息
    找到appExtVrsId项,将下面string内的值改为你要下载版本对应的版本id。比如我要下载的2.25.1版本对应的id是817743478,就改为817743478。

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

    替换"appExtVrsId"

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

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

    app版本

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

    相关文章

      网友评论

        本文标题:Mac下使用iTunes下载iOS应用的任意历史版本

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