利用 Charles 通过 iTunes 下载旧版本的 App

看过一篇关于使用fiddler工具进行抓包,通过iTunes下载旧版本App的文章,但是这是windows平台下的。文章链接。如果是mac平台呢?

fiddler只有windows版本,这只是一个抓包工具。那么mac下,可以通过Charles进行抓包拦截,然后下载。

步骤:

  1. 打开Charles,注意:相关配置需要弄好,比如root证书什么的

  2. 打开iTunes,挑选任意一个app,进行下载,但app开始下载时,可以选择暂停,返回Charles查看

  3. Charles一大堆数据上,可以过滤处itunes。找到类似pX-bug.itunes.apple.com(X为数字)的,Enable SSL Proxying

  4. 然后重新第二步操作,你会发现Structure下面,对应的px-buy.itunes.apple.com下面多出了一些内容。WebObjects/MZBuy.woa/wa/buyProduct,右键对其进行添加breakpoints。,点击content,查看其XML内容。注意:此处需要右键 -> Enable SSL Proxying

    step4

  5. 在上述内容中,你需要找到一个softwareVersionExternalIdentifiers的字段,其中数组array所包含的就是该app的版本记录吧。

  6. 这时候,可以选择对该链接进行保存,事实上主要是为了记住这些版本记录。如下图。

    step6

  7. 删除iTunes中正在下载的app,重新下载该app。此时,Charles中的breakpoints将被激活,前往Charles修改

  8. Charles中,此时看到所打断点的内容。Edit Request->XML Text。会看到appExtVrsId字段。其中的内容就是上述5.中看到的softwareVersionExternalIdentifiers的内容。此时需要将其替换成 任何一个你想要的版本,也就是其他的id。一个版本可能会对应多个id,所以具体还是得逐个尝试才能得到相应的版本。一般来说,appExtVrsId中默认的值都是最新版本的id。修改完毕后,Execute

  9. 返回iTunes查看当前下载,等候完毕。完毕。如果提示出现下载插图什么的乱七八糟Error,那么就重新下载,试多几次就好了。

其实,说到底就是利用Charles,进行拦截修改,进而达成目标。