网易云音乐解析源码

2019年10月21日

以前网易云音乐的公开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 评论

发表回复

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