平心而论,虽然没了杰伦 coldplay,但是对于冷门的歌曲,虾米的曲库还算比较全的,是一个不错的选择。之前下载歌曲的时候用过各种 chrome 插件,大概的原理都是浏览器听歌的时候嗅探访问地址,或者到浏览器缓存中招到歌曲。也一直没去深究没想去做一个自己的下载器。
昨天晚上的时候看到有人提到歌曲下载:据网易云音乐上面的歌单来下载 FLAC 无损音乐,于是乎研究了下虾米的歌曲下载。今天花了2个小时把虾米的下载写了出来。
分析
通过对浏览器发出请求的分析容易得出,歌曲的下载地址是如下形式的url:http://m5.file.xiami.com/46/1046/2100200848/1774781460_58802904_l.mp3?auth_key=3200136d589894789ba042e2843e2b0c-1462147200-0-null
这里关键是要找出auth_key。
这里要用到这个地址:http://www.xiami.com/song/playlist/id/[歌曲ID]/object_name/default/object_id/0
根据歌曲的 ID,找到上面的链接,你会看到一个 xml,然后根据里面的 locations 来找出原始的下载链接,这里 locations 是用凯撒方阵加密的,破解不难,不过要注意不是齐整方阵的情况。
拿到下载链接后,下载就简单啦~!能下载一首歌,下载一个专辑也不是难事啦~!
GitHub 地址:DownloadXiaMi
效率
本地测试:此时时刻 巡回演唱会 25+1 首歌曲,全部下载成功,共133M,10M电信带宽,耗时1分38秒。
简单的数学:1.25M/S * 98S = 122.5M
说明本程序的速度还是相当可以的(电信带宽竟然超过了平均?)
Just For Fun ^_^
2016年05月01日16:41:15