以前网易云音乐的公开api的接口现在升级了,用原有的api无法再正常读取到网易云音乐的歌曲链接了,现在必须要使用新的加密算法来计算网易云音乐的歌曲链接,但是我们还是可以通过改变思路来使用现有的api接口实现这些。我这里公布一下Shell下,PHP下和易语言下三种编程语言的写法,我也只会这三种。如果想要学习网易云音乐的歌曲链接加密算法的话,大家可以参考油猴里的网易云高清或下载的那两个插件的源码。
# !/bin/bash . /etc/profile ############################################################################################################################################ # # This is a lottery number automatic generation tool # Autor: RucLinux # Web: https://www.myzhenai.com.cn/ https://www.myzhenai.com/ https://www.haikou-china.com/ https://jiayu.mybabya.com/ https://www.0898-shop.com/ # 说明:转载引用请保留这段,谢谢 # ############################################################################################################################################# pw="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #https://music.163.com/#/song?id=310449 ########################################################################################################### function wangyi() { id=$(echo "${1}" | awk -F "=" '{ print $2 }') d=$(curl -s https://music.163.com/api/song/detail/"?id=${id}&ids=%5B${id}%5D&csrf_token=") name=$(echo ${d} | awk -F "songs" '{ print $2 }' | awk -F "id" '{ print $1 }' | awk -F "\"name\":\"" '{ print $2 }' | awk -F "\",\"" '{ print $1 }') auto=$(echo ${d} | awk -F "artists" '{ print $2 }' | awk -F "id" '{ print $1 }' | awk -F "\"name\":\"" '{ print $2 }' | awk -F "\",\"" '{ print $1 }') ico=$(echo ${d} | awk -F "\"blurPicUrl\":\"" '{ print $2 }' | awk -F "\",\"" '{ print $1 }') mp=$(echo "https://music.163.com/song/media/outer/url?id=${id}.mp3") one=" {\n" two=" title : " three=" singer :" four=" cover :" fives=" src : " six=" },\r" echo -e "${one}${two}'${name}',\r${three}'${auto}',\r${four}'${ico}',\r${fives}'${mp}'\r${six}" >> ${pw}/in.log wget -p ${pw} -O "${name}.mp3" "https://music.163.com/song/media/outer/url?id=${id}.mp3" } ########################################################################################################### wangyi ${1} #pw 变量是获取当前用户所在目录 #function 是新建一个函数 #wangyi 是新建的函数 #id 这个变量是通过 $1 参数来获取当前用户输入的网页地址里的一段字符串,也就是歌曲的ID码 #d 这个变量是通过curl来读取网页信息 #name 这个变量是通过过滤返回的网页源码并获取歌曲标题这些关键词 #auto 这个变量是通过过滤返回的网页源码获取歌曲的演唱者 #ico 这个变量是通过过滤返回的网页源码获取歌曲唱片图片 #mp 这个变量是通过过滤返回的网页源码获取歌曲的链接地址 #one two three four fives six这几个变量是定义输出的格式的关键字 #in.log 这一行是将所有变量集中输出到一个文件里,以便其他方式调用 #wget 这一行是下载歌曲文件
PHP源代码
function wangyi($id) /** * 网易云音乐地址解析 * $id 这是歌曲链接变量 * $url 这是获得的网页源码变量 * $ql 这是歌单里的歌曲ID数组变量 * $idc 这是歌曲信息数组变量 * $mid 这是歌单里的歌曲ID * $urlid 这是获取的歌曲信息的网页链接 * $durl 这是歌曲网页源码变量 * $sname 这是歌曲名称变量 * $aname 这是歌手名称变量 * $picurl 这是专辑图片地址变量 * $mpurl 这是音乐外链地址变量 */ { $id = getid($id, "="); if (strstr($id, "163.com") == true || strstr($id, "126.net") == true) { if (strstr($id, "playlist")) { $url = file_get_contents($id); $ql = array(); preg_match("\/song\?id=\d+", $url, $ql); $arrlength = count($ql); for ($x = 0; $x < $arrlength; $x++) { $mid = str_replace("/song?id=", "", $ql[$x]); $urlid = "https://music.163.com/api/song/detail/?id=$mid&ids=%5B$mid%5D&csrf_token="; $durl = file_get_contents($urlid); $sname = getmusiczid($durl, '{\"songs\":[{\"name\":\"', '\",\"id\"'); $aname = getmusiczid($durl, '\"artists\":[{\"name\":\"', '\",\"id\"'); $picurl = getmusiczid($durl, '\"picUrl\":\"', '\",\"img'); $mpurl = getmusiczid($durl, '\"mp3Url\":\"', '\",\"hMusic'); $muscz = array("歌曲名称" => $sname, "歌手名称" => $aname, "专辑图片" => $picurl, "歌曲地址" => $mpurl); } } else { $urlid = "https://music.163.com/api/song/detail/?id=$id&ids=%5B$id%5D&csrf_token="; $durl = file_get_contents($urlid); $sname = getmusiczid($durl, '{\"songs\":[{\"name\":\"', '\",\"id\"'); $aname = getmusiczid($durl, '\"artists\":[{\"name\":\"', '\",\"id\"'); $picurl = getmusiczid($durl, '\"picUrl\":\"', '\",\"img'); #$mpurl = getmusiczid($durl, '\"mp3Url\":\"', '\",\"hMusic'); $mpurl = "https://music.163.com/song/media/outer/url?id=".$mid.".mp3" $muscz = array("歌曲名称" => $sname, "歌手名称" => $aname, "专辑图片" => $picurl, "歌曲地址" => $mpurl); } } return $muscz; }
sicnature ---------------------------------------------------------------------
I P 地 址: 52.15.35.129
区 域 位 置: 美国俄亥俄都柏林
系 统 信 息:
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普 | 海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source https://myzhenai.com/post/2889.html
1 评论
网易云音乐
歌手名称、歌单、歌曲名称等信息,get歌曲页面应该可以获得,歌曲链接,获取歌曲网址里的ID编号,然后post http://music.163.com/song/media/outer/url?id={}.mp3