OS X El Capitan 快速更新

前奏

总所周知,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
path : /apple-assets-us-std-000001/Purple3/v4/74/d2/82/74d28291-9db9-7ae2-305d-9b8b3f5fd463/

修改hosts

sudo vi /etc/hosts
[hosts]

如此一来,系统 DNS 将把 osxapps.itunes.apple.com 解析到本地。

创建express项目

万事俱备,只欠exprss。

$ cd your-project // 任意名称
$ mkdir static
$ npm install express

手动将下载好的.pkg文件拷贝到项目的static文件夹,在项目文件夹根目录创建server.js:

var express = require('express');
var path = require('path');

var app = express();
// 映射资源
app.use('/apple-assets-us-std-000001/Purple3/v4/74/d2/82/74d28291-9db9-7ae2-305d-9b8b3f5fd463/', express.static(path.resolve('.', 'static')));

app.listen(80);
console.log("Server Listen on port 80.");

启动程序

$ 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 ,原理相通。

参考

URL
SimpleHTTPServer
hosts 文件


博客:https://vectorho.github.io
作者:Vector Ho