在 AppStore 下載程序時,iOS 系統(tǒng)默認(rèn)只能下載APP的最新版本。
但是,如果手中有 iOS 7 的設(shè)備,在下載一個最低支持 iOS 8.0 或者更高版本的 APP 時會發(fā)現(xiàn)分歇,AppStore 會下載一個兼容 iOS 7的歷史版本,而不會告知APP 不支持當(dāng)前系統(tǒng)導(dǎo)致下載失斉肥(前提是這個 Apple ID 購買過這個 APP职抡,否則不會下載兼容的歷史版本)。
實際上误甚,AppStore 保存著一個 APP 的所有歷史版本缚甩,我們可以通過越獄后安裝相關(guān)的工具,在 AppStore 直接下載歷史版本窑邦。如果不想越獄的話擅威,可以通過對 Windows/Mac 端的抓包工具對 iTunes 進(jìn)行抓包,修改網(wǎng)絡(luò)請求來下載軟件的歷史版本冈钦。
在 Windows 端通過 Fiddler 抓包下載歷史 APP 版本的文章已經(jīng)足夠多郊丛,這里介紹在 Mac 上通過 Charles 來進(jìn)行抓包下載。
軟件
- Charles v4.1.2
- iTunes v12.5.3.17
- iTunes v12.5.1 官方下載
Charles 安裝根證書瞧筛,并且設(shè)置始終信任
- Help -> SSL Proxying -> Install Charles Root Certificate (或者保存為.cer 雙擊安裝)
- 在鑰匙串中雙擊證書厉熟,打開屬性頁,設(shè)置始終信任
對 iTunes 的下載網(wǎng)絡(luò)請求設(shè)置
- 任意下載或者更新一個 app较幌,確定開始下載后就可以刪除下載(這一步只是為了確認(rèn)網(wǎng)絡(luò)請求地址)
- 在 Sequence 中找到 p28-buy.itunes.apple.com 的請求揍瑟,右鍵菜單中選擇Enable SSL Proxying(開啟 HTTPS 代理),并設(shè)置 Breakpoints(斷點)
- 右鍵 Save Response绅络,可以把所有的 app 版本對應(yīng)的 id 保存到本地
正式下載
- 開啟斷點
- 在 iTunes 中選擇要下載的程序進(jìn)行下載或更新
- 開始下載后月培,等待 Charles 斷點
- 在斷點窗口,選擇 Edit Request恩急,選擇 XML Text
- 在 XML 文件的 appExtVrsId 節(jié)點替換為要下載的 app 版本的 id
- 關(guān)閉斷點,點擊 Execute 完成下載