关于虾米音乐网的音乐解析说明【技术干货】

lyntal| 阅读:950 发表时间:2017-09-19 14:39:13 技术干货

我们今天就谈谈虾米网的音乐外链问题吧(是详细的谈谈←_←),可能虾米的技术人看到了估计又会改接口了...

最早呢(11年)我发现虾米网的音乐链接是直链,例如:

http://f1.xiami.net/2018/300034/3320521_235587.mp3

特别的简单,直来直去,很是喜欢,那个时候QQ空间特别火爆,什么背景音乐啊,装扮啊,皮肤什么的,可是孩子时代都很穷嘛,哪有那么多钱开绿钻呀,于是,音乐外链便在那时火热的起来~

严格来讲,如果一个资源并不是它所在服务器程序所调用的话,就被称作 被盗用,链接也一样,称作:盗链,由于并不是在虾米网站上听歌,且可直接通过此地址访问到音乐,这就导致虾米网人流不多的情况下服务器资源,带宽资源被大肆占用,使得正常浏览虾米网站的用户体验度变差,所以,虾米网认识到这一点后便开始了对抗!

好了,扯远了,接着说,在那之后,由于其它音乐网站的发现(百度,QQ音乐,酷我,酷狗,1听,9酷等等)渐渐放下了对虾米网站的关注

后来有一次分析虾米音乐时(可能是去年吧)发现链接形式变了!

例如:http://m1.file.xiami.com/1/18/2018/300034/3320521_235587_l.mp3

这种,直链的链接一般防盗技术都不够,所以,并没有解决大部分盗用的问题

再后来可能太多人盗链虾米的音乐链接来用,虾米音乐链接加上了auth_key(大概是“识别密钥”的意思吧),auth_key是随机给出的一串密钥,在一定的时间内auth_key会失效的,例如这种:

http://m5.file.xiami.com/1/18/2018/300034/3320521_235587_l.mp3?auth_key=1fccaf129d3b828bd762f21466881410-1408924800-0-null

这也是前段时间各大音乐网站普遍使用的防盗缓存技术,没错,现在虾米网就是类似于这样的链接,这一来,几乎99%的外部链接都会失效,于是,随着QQ空间的没落,音乐外链这种需求几乎没有了,但是,最近各大音乐网站掀起一场版权革命,说白了,就是一些音乐得花钱才能下载!纳尼、?在这残忍的社会里总会有突破的方法,于是,之前的外链便重新启用,目的不是为了长期使用,而是为了下载

那么,问题来了,对于虾米网这么改变的外链,各大技术牛人便扛起了技术对抗的大旗,抓取,根据虾米音乐的api给出了php,js,python等版本的音乐外链解析,使得用户输入试听的链接就能下载下来,但是,技术是与时俱进的,虾米的防盗技术也是一天天的增强,直到现在虾米音乐链接直接全加密了,且虾米音乐的api也多次变动,这样大牛们写的一些解析就会失效了

例如:

9hFl%97%135F%f44a85lt%i21857__a3e56-%Elt2cF18E71luD7%e15-pFd179%21.t34525E%%on79%542mh8aE9%453m.9%5E56p_16ff5%EA5c%2E%573k7922E5-%.o2F6292%e69174En2amF18F963y28565%u

好家伙,真是非人类的语音,咋一看一堆乱码,那么,在此,我们就来说一下这串加密的url是怎么得来的,首先,当然是虾米的api:

http://www.xiami.com/song/playlist/id/1772455993/object_name/default/object_id/0/cat/json

api分为两种,一是返回xml的格式数据,另一种是返回json的格式。至于上面api中的1772455993这串数字是什么意思又是怎么的来的,当你在虾米网点开一首歌的时候浏览器里面的url会显示例如:

http://www.xiami.com/play?ids=/song/playlist/id/1772455993/object_name/default/object_id/0#loaded

这样的单曲页面,而1772455993正式这首歌曲的id编号。

说到这对于一个新手来说很有价值,对于一个高手来说,废话很多。下面就介绍一下怎么获取虾米网的音乐链接吧

首先是这串加密链接的算法:

9hFl%97%135F%f44a85lt%i21857__a3e56-%Elt2cF18E71luD7%e15-pFd179%21.t34525E%%on79%542mh8aE9%453m.9%5E56p_16ff5%EA5c%2E%573k7922E5-%.o2F6292%e69174En2amF18F963y28565%u

我们用类似于凯撒方阵把链接的第一个数字去掉然后,如下图:

前两行分为19个字符,后七行分为18个字符排列

捕获

细心的人会发现从左边开始竖着往下拼起来类似于音乐链接了:

http%3A%2F%2Fom5.alicdn.com%2F179%2F91179%2F17889%5E68%5E%5E%2F1772455993_

11267265_l.mp3%3Fauth_key%3D381762fe74a699845%5Ef21546e29f276a-15%5E458%5E4%5

E%5E-%5E-null

看到这你还不明白吗?把这条链接UrlDecode解码一下得到:

http://om5.alicdn.com/179/91179/17889^68^^/1772455993_11267265_l.mp3?auth_key=381762fe74a699845^f21546e29f276a-15^458^4^^-^-null

然后我们把^字符替换成0得到:

http://om5.alicdn.com/179/91179/1788906800/1772455993_11267265_l.mp3?auth_key=381762fe74a6998450f21546e29f276a-1504580400-0-null

这呢,就是解析加密后的链接了~


*文章为网络作者独立观点,不代表Sinsyth的立场
本文由Sinsyth Online发表并编辑,转载此文章须经作者同意,并请附上出处及本页链接。如有侵权,请联系本站删除。