QQ音乐无损地址分析

QQ音乐的歌曲要想下载很简单,最主要的就是通过获取到vkey和歌曲的mid进行地址拼接,进行下载。

获取方法一(直接计算)

首先来看一段无损音乐的地址

http://dl.stream.qqmusic.qq.com/F000003aAYrm3GE0Ac.flac?vkey=9EE4B929121DD578EE78612BC15DE2A6276D5792625C822D772B42B66C3922DB682E7F674BA92A8BD1D78D39D090F73BACCBE9F2BF9181E6&guid=1234567890&uin=1008611&fromtag=64

抽象一下:

无损下载的地址就是这样的

http://dl.stream.qqmusic.qq.com/A000” + StrMediaMid + “.ape” + “?vkey=” + vkey + “&guid=” + guid + “&uin=” + uin + “&fromtag=64

这段网址中,A000为音乐格式的标识符,ape为A000,flac文件为F000,320Kmp3文件为M800,普通mp3为M500。

StrMediaMid,为歌曲的MID,可以查看音乐也没的网页源码

在网页里面找到strMediaMid后面的参数

vkey为歌曲的核心认证参数,后面说如何获取

guid为随机数,获取vkey的时候会提交guid,应该和提交的时候一致。

uin是QQ号,获取vkey的时候会提交QQ号,应该和提交的时候一致。

计算vkey方法

url = “http://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?g_tk=0&loginUin=” + uin + “&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0&cid=205361747&uin=” + uin + “&songmid=003a1tne1nSz1Y&filename=C400003a1tne1nSz1Y.m4a&guid=” + guid

本地址为vkey获取的地址,uin为QQ号,两个uin都该一致,gui为随机数。提交会返回一个json数据,vkey就在里面了。

{
"code":0,
"cid":205361747,
"userip":"182.150.103.213",
"data":
{
"expiration":80400,
"items":
[
{
"subcode":0,
"songmid":"003a1tne1nSz1Y",
"filename":"C400003a1tne1nSz1Y.m4a",
"vkey":"0CF6896ABBC87B84173BB0DFBDA35223867021149CCF05C4B16E21C67DD7628C667EA9867885336D171FA0F9B4CF54A80879E92E78BF2A75"
}
]
}
}

那么要下载一个无损就很简单了。

组合好网址,就可以进行下载了。

获取方法二(替换法)

说实在的,QQ音乐的这个算法真的是简单得漏洞百出。首先我们选择一首音乐进行播放,使用谷歌内核的浏览器F12进行抓包。

选择过滤器只查看媒体文件,我们就可以看到一段播放地址了

http://dl.stream.qqmusic.qq.com/C400000DwvOd2VQYRl.m4a?vkey=D9EE5F84DF7C0E4E4C9DE27E8B7B04A99C5B61D555A176C59F1A92B1A5BF849671860FDE21765281EE25490C67D8A60886E7378732144C1E&guid=5891092592&uin=2242332008&fromtag=66

有没有很熟悉?这个地址和我们的无损地址就只差一点点了。

首先修改C400为上面我们需要的无损前缀,比如ape修改为A000,然后把m4a修改成ape,最后将末尾的fromtag=66修改成fromtag=64,即可

相关源码下载

解析好QQ音乐的搜索,即可做成一个比较不错的客户端了

易语言源码

链接: https://pan.baidu.com/s/1-NGB64TeTpm6eA6H1yyXUw 密码: rhv5

Android studio源码

链接: https://pan.baidu.com/s/1nQ7Ntw6A0ahtAeC7FMn7dw 密码: uhpe

 

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注