隨著國內版權環境走上正軌以及各公司日漸迫切的商業化需求,我們發現很多“良心”應用已經慢慢地變得不那么良心了。
這時候我們就需要回到應用的某個“良心”版本,對于安卓用戶來說,安裝一個歷史版本很簡單,只要搜到一個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 />
系統會自動打開鑰匙串,找到下圖中的三項:
默認情況下三項都帶有紅叉,也就是不被系統信任的。
我們右擊證書,顯示簡介,在信任里將“使用系統默認”改為“始終信任”,然后關閉。過程中需要輸入系統管理員密碼,輸入下就好了。
三項證書都修改完成后,關掉鑰匙串。
二、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
。
<br />
雙擊標紅的那一行,會跳到我們所需的信息處。
圖中一大串“<integer>xxxxxxxxxx</integer>”的項目就是應用在appstore中的版本id,從上到下版本由舊到新。我們需要將這些版本號記錄下來。
三、修改請求參數下載應用指定版本
首先我們需要攔截iTunes的下載請求。在我們剛才的記錄上右擊,選擇Breakpoints
,這樣就添加了一個斷點。
<br />
清理下記錄,再次下載“追書神器”。這時請求會被攔截并hold住,charles也會自動彈出斷點操作窗口,我們在這里編輯請求信息。
找到
appExtVrsId
項,將下面string內的值改為你要下載版本對應的版本id。比如我要下載的2.25.1版本對應的id是817743478,就改為817743478。
注意:版本對應的id可能需要多次嘗試才能找到,這個沒有捷徑,只能一個一個試。
<br />
修改完成后點擊下方的Execute,之后還會有一次來到斷點,這次直接點擊Execute。
打開iTunes,在你會發現下載的應用的版本已經是你指定的了,最后的工作就是安裝到手機上了。
提示:不用的時候要關閉charles或取消之前設置的斷點,否則每次iTunes下載應用的時候都會被攔截。