Java实现虾米音乐免虾币下载

平心而论,虽然没了杰伦 coldplay,可是对于冷门的歌曲,虾米的曲库还算比较全的,是一个不错的选择。以前下载歌曲的时候用过各类 chrome 插件,大概的原理都是浏览器听歌的时候嗅探访问地址,或者到浏览器缓存中招到歌曲。也一直没去深究没想去作一个本身的下载器。git

昨天晚上的时候看到有人提到歌曲下载:据网易云音乐上面的歌单来下载 FLAC 无损音乐,因而乎研究了下虾米的歌曲下载。今天花了2个小时把虾米的下载写了出来。github

分析

经过对浏览器发出请求的分析容易得出,歌曲的下载地址是以下形式的url:http://m5.file.xiami.com/46/1046/2100200848/1774781460_58802904_l.mp3?auth_key=3200136d589894789ba042e2843e2b0c-1462147200-0-nullchrome

这里关键是要找出auth_key。浏览器

这里要用到这个地址:http://www.xiami.com/song/playlist/id/[歌曲ID]/object_name/default/object_id/0缓存

根据歌曲的 ID,找到上面的连接,你会看到一个 xml,而后根据里面的 locations 来找出原始的下载连接,这里 locations 是用凯撒方阵加密的,破解不难,不过要注意不是齐整方阵的状况。测试

拿到下载连接后,下载就简单啦~!能下载一首歌,下载一个专辑也不是难事啦~!加密

GitHub 地址:DownloadXiaMiurl

效率

本地测试:此时时刻 巡回演唱会 25+1 首歌曲,所有下载成功,共133M,10M电信带宽,耗时1分38秒。spa

简单的数学:1.25M/S * 98S = 122.5M

说明本程序的速度仍是至关能够的(电信带宽居然超过了平均?).net

Just For Fun ^_^

Github 地址:https://github.com/houweitao/DownloadXiaMi

2016年05月01日16:41:15

相关文章
相关标签/搜索