想法
最近滴滴在 App Store 上架了「新版Uber」 眾所周知,這個版本簡直就是老掉牙的 Uber + 滴滴的 UI,解壓.ipa 文件,你甚至可以直接發現滴滴的 logo,內部文件結構和滴滴自己的 app 幾乎沒有差異…… 而大洋彼岸真正的 Uber 公司卻是發布了真正的新版 Uber,不僅界面簡化美觀,同時整合多家互聯網公司服務,讓你可以在路途看終點附近的餐館,電影院,甚至直接訂票。
我得知 Uber 公司發布更新后,便立即準備升級,然而我卻發現 Uber 已經在中國區 App Store 消失,我終于轉而在已購項目下載到了更新,很遺憾我卻收到了以下提示。
新版 Uber 已經無法在中國使用,但我發現我為了升級這個版本丟掉了Uber的老版本,而我已經沒有辦法下載老版本了,難道我真的要像現在每一個還在使用老版本Uber的用戶一樣,收到提示,并升級滴滴版的「新版Uber」嗎?
當然不。接下來這篇文章將告訴你如何下載任意版本的任意iOS App,即降級。
請注意,接下來的教程較長,且較為復雜,如果看文章不太清楚,可看視頻版本。第一次操作可能需要你十分鐘時間,熟悉后就非常輕松了。
準備工作
你所需要的東西非常簡單:
*iTunes (什么?你沒有?)*Charles Proxy (點擊下載)
你下載的 Charles Proxy 為30天試用版本,安裝后你將看到如下界面,這是一個10秒的等待系統告訴你你正在使用使試用版本。
另外,邊看視頻教程邊操作可能會更簡單更節約時間。
Youtube:https://www.youtube.com/watch?v=XVejjUG9xUo
優酷:http://v.youku.com/v_show/id_XMTgxNTMxMTY0NA==.html
接下來你會收到這樣的提示:
請點擊 Grant Privilege 并輸入管理員密碼,這將自動為系統配置代理設置以啟用 Charles 服務。
你便可以看到左邊開始滾動顯示你的網絡流量了,先不管它。Charles Proxy 使用Men in the Middle (MitM) 來監視你的HTTPS協議,因此它需要證書。如果你配置過Surge MitM 那你已經很熟悉了,接下來我們需要先處理證書的問題:
注意 這步非常重要 如果你使用 iTunes 12 或以上版本 此步失敗將導致 iTunes 不驗證 SSL 服務器身份阻止你下載
Windows 通過證書方法請參照英語官網方法https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
在你的頂部 Bar 中找到 Help,SSL Proxying,點擊「Install Charles Root CA」(圖中「I這里」的位置),這將自動打開 macOS 鑰匙串訪問,你需要再次輸入管理員密碼。
雙擊打開(你的電腦上可能會有紅色 X 圖標)
將第一項「使用此證書時」改成始終信任,后面的會自動修改,然后關閉小窗口,并再次輸入管理員密碼保存。
接下來請退出 Charles,我們稍后再打開它來處理。
開始下載
打開 iTunes,在 App Store 中找到你所想要降級的 App,這里以 LoveLive! 學園偶像祭舉例。
找到這個界面了嗎?很好,現在我們重新打開 Charles,等待10s進入界面之后,點擊 iTunes上的下載。
當你看到左邊有「p數字-buy.itunes.apple.com」的時候,請前往 iTunes 取消下載,因為你實際上并不需要下載它。
右鍵點擊「p數字-buy.itunes.apple.com」,找到「Enable SSL Proxying」并點擊。然后回到 iTunes 刷新界面(可以重新搜索,也可以直接 Cmd+R)再次點擊下載,然后再次取消。(聽起來很奇怪不是嗎??,不過沒有問題)
你驚奇地發現剛才的地址可以展開了,而且可以找到一個叫做 buyProduct 的東西,我們點開它。
在右邊兩個 XML 中,下邊的那個里面找到比較底部的含有一大堆數字的項目「softwareVersionExternalIdentifiers」,這就是每個版本所對應的版本 ID。從小到大為從最舊的版本到最新的版本,也就是說這個App最新版本的ID是「818014617」,1.0版本是「401463784」。
如果你要下載它最早的版本,那么直接使用第一個 Integer 就可以了。但是如果要下載中間的一個版本怎么辦呢?你可能需要對照App更新列表來找到你要的版本,并且不斷嘗試……此問題也困擾了我很久。
好的,現在我們找到了版本 ID,以 1.0 即 401463784 舉例。現在我們再次右鍵「p數字-buy.itunes.apple.com」,在剛剛Enable SSL Proxying 的下方找到 Breakpoint:斷點并勾選它。再次返回iTunes刷新并再次點擊下載。
Duang!Charles 突然彈了出來!因為你剛剛設置了斷點,iTunes 再次請求的時候 Charles 給了你一個暫停時間的功能,這個時候下面的 Cancel 就是忽略,Abort 就是阻止,Execute 就是執行。如果我點擊 Abort,你會發現 iTunes 彈出窗口顯示下載未完成,未知錯誤。那是因為你拒絕了它的 buyProduct 下載。
閑話不多說,我們選擇頂上「Overview」旁邊的「Edit Request」,并在 Cancel Abort 和 Execute 的上方選擇 XML Text。
頂部有一個叫做 appExtVrsID 的項目,將它的值直接修改成我們需要的版本 401463784。然后點擊底下的 Execute。接下來還會有幾次彈窗,不需要做任何操作,直接 Execute 即可。
恭喜!這次下載的版本就是你所需要的老版本。下載完畢后可能還會有幾次 Breakpoint,直接 Execute 即可,然后便可以關閉 Charles(如果你之前就關閉了 Charles,不影響)連接上你的 iPhone, iPad 或 iPod touch 將其同步進入設備即可。
腳注:其實并不一定需要用 Charles,任何支持修改 POST 請求 HTTPS 的代理工具,方法肯定也是大同小異的。像 Surge 貌似是只能捕獲請求并不能編輯,就不太能完成這個操作。無論如何 Charles 只是其中一種選擇。
Enjoy!
(不要嘗試了 QQ 1.0 在我們現有的設備上都打不開)
*2016.11.14 更新:感謝各位支持,最近思考了一下能不能直接在 iOS 上完成這個操作,而不需要通過 iTunes 同步,因為本身 Charles 支持接管 iOS 流量,和 Surge 也是很類似的。但是很遺憾,由于 iTunes Store 類軟件在 iOS 上用了特殊網絡加密,不會由于系統信任證書來信任 Charles 的偽造中間人,而 Surge 采用了 TUN 原理所以強制成功。對于 Charles 的 SSL Proxy 其他 iOS 上的 App 都可以,說明 Apple 別有用意保證用戶 App Store 安全。故大家還是需要麻煩一點通過 iTunes 來做這個操作。