前奏
总所周知,app store 国内下载速度实在不敢恭维,然而系统升级一般没个一天是搞不定的(心中有一万只草泥马在奔腾ಥ_ಥ)。
但是,你们天真地以为这就能难倒技术控了么?23333…
今天小弟就给看官们带来一次全新体验。
原理
抓取苹果官方下载链接,离线到第三方服务器分流。再使用第三方下载工具下载系统.pkg
文件。搭建本地静态文件server
,
将苹果官方的下载地址解析到本地的服务器,从而实现快速下载安装。
抓取工具首推charles(本人和charles不存在隶属关系^.^)。
ps
:以上适用于 El Capitan 更新慢的用户,有百兆光纤的用户可忽略。
实践
相信实践出真理。
抓取官方下载链接
由于前段时间的 Xcode Ghost 影响,不能再信任第三方的网盘, 通过 Charles 抓取到的链接如下:
http://osxapps.itunes.apple.com/apple-assets-us-std-000001/Purple3/v4/74/d2/82/74d28291-9db9-7ae2-305d-9b8b3f5fd463/ftk3252456602304584541.pkg
ps
:为了安全性最好自己抓包获取此下载地址,后面的 hostname、 path 和自己抓取的链接对应。
下载.pkg文件
抓取到苹果官方的下载链接后,可以先离线到百度云分流我们可以通过第三方下载工具下载 .pkg 文件,下载工具自备。
下载完成后文件是无法直接安装的,所以我们要准备欺骗 App Store 把静态文件 server 映射到本地。
下面要做的就是搭建本地静态文件 server 替换苹果官方的 server。
搭建静态文件server
搭建本地静态资源服务的方法太多了,e.g. 现成的就有nginx、apache;程序有 nodejs、python、java etc.
本教程选择熟悉的express,只需一个中间件即可搞定,搭建node环境,不再赘述。
分析url
url格式:
protocol:// hostname[:port]/path[?query]#hash
在这里我们只需要找到 hostname 和 path;
hostname : osxapps.itunes.apple.com |
修改hosts
sudo vi /etc/hosts |
如此一来,系统 DNS 将把 osxapps.itunes.apple.com 解析到本地。
创建express项目
万事俱备,只欠exprss。
$ cd your-project // 任意名称 |
手动将下载好的.pkg文件拷贝到项目的static文件夹,在项目文件夹根目录创建server.js:
var express = require('express'); |
启动程序
$ cd your-project
$ sudo node server.js
此时你可以在浏览器中测试,在地址栏输入我们抓取的苹果官方的下载链接,如果一切配置都正确,你应该会看到百兆的下载速度。
http://osxapps.itunes.apple.com/apple-assets-us-std-000001/Purple3/v4/74/d2/82/74d28291-9db9-7ae2-305d-9b8b3f5fd463/ftk3252456602304584541.pkg
更新 El Capitan
打开 App Store 找到 OS X El Capitan 的更新按钮, 点击更新按钮。稍等片刻,下载完成后就会弹出安装页面。
安装过程需要一段时间,冲杯咖啡等待即可。
enjoy yourself …
还原hosts
记得一定要还原hosts设置,不然以后 App Store 就更新不了,方法就是删除掉上文配置的映射,保存即可。
引申
如果有vps的话,也下载到自己的vps上,然后将苹果的下载地址解析到vps ,原理相通。