iOS利用iTunes获取应用包
2018-08-22 本文已影响30人
可惜你不是我的双子座
iTunes
升级到12.7.0.166
之后移除了App Store
的功能。苹果官方提供了iTunes 12.6.3
支持的App Store
和iOS 11
,下载地址为iTunes12.6.3.dmg。
这个时候我们按照常规的打开iTunes
应用时,会提示iTunes Library.itl
由高版本创建,资料库无法打开,如下图。
重新退出应用后,按住
option
键双击打开iTunes
,单击创建资料库,如下图。按住option键双击打开iTunes.png
创建资料库.png
打开
iTunes
之后,勾选应用,如下如。选择应用.png
这时,在右上角的搜索框中输入想要下载的应用名称,如下图。
搜索微信.png
单击搜索列表中对应应用的获取或者下载按钮,即可下载该应用最新版本的
ipa
文件,如下图。下载微信.png
下载之后,在资料库中找到刚刚下载的应用,单击右键,在弹出的快捷菜单中选择在Finder中显示选项,如下图,就会定位
Finder
所对应的ipa
文件的位置了(这里下载的是微信 6.7.1)。微信.png
通过这种方式只能下载最新版本的应用。下面介绍一种结合
Charles
下载早期版本应用的方法。(以网易云音乐为例)打开
Charles
,设置Mac OS
全局代理,1.设置`Mac OS`全局代理
然后下载你需要获取应用,即可在
Charles
中看到类似https://p7-buy.itunes.apple.com
。对该请求下断点,图中2的原因后面会说。断点
然后删除资料库中已经下载的应用,重新单击获取应用的按钮,就会触发断点。在
Request
发出时,单击Execute
按钮继续发送请求。单击Execute按钮
Response
会再次触发该断点。单击Edit Response
选项,选择XML Text
选项,可以看到类似如下的内容。内容
如果你出现如下错误,是因为没有支持对
https
的请求,只需点击断点图中2的位置。错误
选出我们需要的那部分内容:
<key>softwareVersionBundleId</key><string>com.netease.cloudmusic</string>
<key>softwareVersionExternalIdentifier</key><integer>828090879</integer>
<key>softwareVersionExternalIdentifiers</key>
<array>
<integer>812932579</integer>
<integer>812945326</integer>
......
<integer>827420055</integer>
<integer>827635604</integer>
<integer>828090879</integer>
</array>
解释一下这里的含义
-
softwareVersionBundleId
:当前下载应用的Bundle ID
。 -
softwareVersionExternalIdentifier
:其中的828090879
和下面array
中最新的数字对应,表示当前下载的版本。 -
softwareVersionExternalIdentifiers
:包含该应用所有版本所对应的数字。为了下载早期版本,需要获取这里对应的数字。
假如需下载版本827420055
的ipa
文件,可以再次单击获取应用的按钮,触发断点,然后单击Edit Request
选项,得到如下内容。
当前内容
这里的828090879
表示当前要下载应用的版本。将这个值修改为827420055
,然后单击Execute
按钮,等待下载完成。在Finder
中现实得到了网易云音乐 5.3.0.ipa
。那么,如何将这些数字和版本号对应起来呢?在iTunes
的搜索结果中单击目标应用下面的下拉菜单,选择复制链接选项,(题外话,细心的同学已经可以看到更新二字,表示下载的是早期版本)如图:
复制链接
例如,复制的链接是https://itunes.apple.com/cn/app/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90-%E9%9F%B3%E4%B9%90%E7%9A%84%E5%8A%9B%E9%87%8F/id590338362?mt=8
。提取其中的ID "590338362"
,然后访问https://api.unlimapps.com/v1/apple_apps/590338362/versions
。全局搜索827420055
,在其中找到对应版本号的external_identifier
。
版本查看