虾米音乐外链+php解析破解
此文详细谈谈虾米网的音乐外链和php解析吧(是详细的谈谈←_←)
1.最早我发现虾米网的音乐链接是直链,例如:http://f1.xiami.net/2018/300034/3320521_235587.mp3
2.后来(可能是去年吧)又发现链接形式变了,例如:http://m1.file.xiami.com/1/18/2018/300034/3320521_235587_l.mp3
3.再后来可能太多人盗链虾米的音乐链接来用,虾米音乐链接加上了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
(综上所述,如是要用这个音乐链接怎么办,于是网络上各种大神根据虾米音乐的api给出了php,js,python等版本的音乐外链解析)
4.直到现在虾米音乐链接直接全加密了,且虾米音乐的api也多次变动,这样一些解析就会失效了,例如:
8h2fmF2%5258%kc368-2EltFii1F2EF273ecb2814-lt%l.%2F%31_Fya8f148%p2ec2%353_la%f224%%5%F.oF5%E22.u3181155E3mxm1E53%3mtD2b4%EE-A5i%81E455ph19d658%n%.a2%8%%E53_fd76E95u
5.下面说一下这串加密的url是怎么得来的,当然是虾米的api,下面我就列出几个还未失效的虾米api:
http://www.xiami.com/song/playlist/id/3320521
http://www.xiami.com/song/playlist/id/3320521/object_id/0/cat/json
http://www.xiami.com/widget/xml-single/sid/3320521
http://www.xiami.com/widget/json-single/sid/3320521
以上这四种api分为两种,一是xml的格式,另一种是json的格式。至于上面api中的3320521这串数字是什么意思又是怎么的来的,当你在虾米网点开一首歌的时候浏览器里面的url会显示例如http://www.xiami.com/song/3320521这样的单曲页面,而3320521正式这首歌曲的id编号。
说到这对于一个新手来说很有价值,对于一个高手来说,废话很多。下面就介绍一下怎么获取虾米网的音乐链接吧
6.解析虾米解密音乐链接:
首先是这串加密链接的算法:
8h2fmF2%5258%kc368-2EltFii1F2EF273ecb2814-lt%l.%2F%31_Fya8f148%p2ec2%353_la%f224%%5%F.oF5%E22.u3181155E3mxm1E53%3mtD2b4%EE-A5i%81E455ph19d658%n%.a2%8%%E53_fd76E95u
用类似于凯撒方阵把链接的第一个数字去掉然后前两行分为21个字符,后六行分为20个字符排列:
h2fmF2%5258%kc368-2El
tFii1F2EF273ecb2814-l
t%l.%2F%31_Fya8f148%
p2ec2%353_la%f224%%5
%F.oF5%E22.u3181155E
3mxm1E53%3mtD2b4%EE-
A5i%81E455ph19d658%n
%.a2%8%%E53_fd76E95u
细心的人会发现从左边开始竖着往下拼起来类似于音乐链接了:http%3A%2F%2Fm5.file.xiami.com%2F1%2F18%2F2%5E18%2F3%5E%5E%5E34%2F332%5E521_235587_l.mp3%3Fauth_key%3D1fccaf129d3b828bd762f2146688141%5E-14%5E89248%5E%5E-%5E-null
看到这你还不明白吗?把这条链接UrlDecode解码一下得到:http://m5.file.xiami.com/1/18/2^18/3^^^34/332^521_235587_l.mp3?auth_key=1fccaf129d3b828bd762f2146688141^-14^89248^^-^-null
然后把^字符替换成0得到:
http://m5.file.xiami.com/1/18/2018/300034/3320521_235587_l.mp3?auth_key=1fccaf129d3b828bd762f21466881410-1408924800-0-null
这就是解析加密后的连接了
7.php解析虾米解密音乐链接:
<?php //方法来自网络 ERROR_REPORTING(0); $id= $_GET["id"]; $content=file_get_contents('http://www.xiami.com/widget/xml-single/sid/'.$id[1]); //获取组合地址内容 preg_match("/<\!\[CDATA\[([^\]].*)\]\]><\/location>/i",$content,$location);//匹配location内容 $xiami=ipcxiami($location[1]); //转码得到正确的地址 header('Content-Type:application/force-download'); //强制下载 header("Location:".$xiami); function ipcxiami($location){ $count = (int)substr($location, 0, 1); $url = substr($location, 1); $line = floor(strlen($url) / $count); $loc_5 = strlen($url) % $count; $loc_6 = array(); $loc_7 = 0; $loc_8 = ''; $loc_9 = ''; $loc_10 = ''; while ($loc_7 < $loc_5){ $loc_6[$loc_7] = substr($url, ($line+1)*$loc_7, $line+1); $loc_7++; } $loc_7 = $loc_5; while($loc_7 < $count){ $loc_6[$loc_7] = substr($url, $line * ($loc_7 - $loc_5) + ($line + 1) * $loc_5, $line); $loc_7++; } $loc_7 = 0; while ($loc_7 < strlen($loc_6[0])){ $loc_10 = 0; while ($loc_10 < count($loc_6)){ $loc_8 .= @$loc_6[$loc_10][$loc_7]; $loc_10++; } $loc_7++; } $loc_9 = str_replace('^', 0, urldecode($loc_8)); return $loc_9; } ?>
把以上的内容存放成php文本(注意编码),例如xiami.php放在服务器上后调用方法是xiami.php?id=
还有一个版本来自于我的友链包同学的这篇虾米php解析,相信他对虾米音乐外链也有着独到的见解
若文章对你有用点个喜欢吧~
好文章,我说怎么就找不到突破点,原来是这样
http://www.xiami.com/widget/0_虾米音乐ID/singlePlayer.swf这种官方提供的转帖地址(这个转帖地址不就是最好的API吗?),我的意思是,用php每次都通过官方转帖flash地址(或者是播放页面)嗅探到带MP3后缀播放地址,返回播放地址供我们调用?—–php小白建议,不知大神能否实现?
@yeye.tv 能嗅到mp3的链接,但是链接有防盗链,无法直接使用
@yeye.tv 只能用php解析虾米mp3地址来调用
好像又失效了,虾米一直不断在与黑客抗争。
感谢有这么好的介绍。
看看
来看看,之前的鬼梦上不去了,我找了好久才找到这
@Gumi 哈,我记得你,别来无恙啊~
@爱在发烧 还好啊~ 这个主题没有做响应式呀 ,家里网刚刚坏了。手机流量来回复一下。再能来到你的站有种说不出的感觉,之前一次次手敲ageme.info无果,尽是失落。想起当初,从音乐外链吧找到你,就又过去啦,还好还好你就被这么找到了,来到了这~ 我会常来的
永远相信下一秒是幸福的~每日打卡,打卡时间:下午1:22:18
看看,虽然外链都用七牛,然后现在懒到直接传自己服务器.(ーー゛)
我是来看隐藏部分的,没有就拉黑
@包子 到底有还是没有呢?
@发烧爱 没看到,已拉黑~
@包子 友尽,晚安~
真开心吖。大神又回来了
@ivkeji 我哪里是大神啊
@发烧爱 你看不到么
@ivkeji 哈哈,我在