网易云音乐解析源码

2019年10月21日

以前网易云音乐的公开api的接口现在升级了,用原有的api无法再正常读取到网易云音乐的歌曲链接了,现在必须要使用新的加密算法来计算网易云音乐的歌曲链接,但是我们还是可以通过改变思路来使用现有的api接口实现这些。我这里公布一下Shell下,PHP下和易语言下三种编程语言的写法,我也只会这三种。如果想要学习网易云音乐的歌曲链接加密算法的话,大家可以参考油猴里的网易云高清或下载的那两个插件的源码。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# !/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 这一行是下载歌曲文件
# !/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 这一行是下载歌曲文件
# !/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源代码

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
}
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; }
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 地 址: 3.148.238.144
区 域 位 置: 美国
系 统 信 息: 美国
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source https://myzhenai.com/post/2889.html

1 评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注