先随便在QQ的网页找一首歌放一下,然后打开控制台,找到真正的播放地址
双击打开就获取到了真正的播放地址,发现这个播放地址的规则是:
http://dl.stream.qqmusic.qq.com/C400${songmid}.m4a?guid=7347620869&vkey=${vkey}&uin=0&fromtag=66
目前已经知道了songmid那么就需要找到vkey,还是在播放页面找获取歌曲的vkey的地址
返回的结果中有我们需要的vkey
头部需要传入参数,那么就需要使用node的express模块代理请求了
app.get('/api/getplaysongvkey', function (req, res) { var url = 'https://u.y.qq.com/cgi-bin/musicu.fcg' axios.get(url, { headers: { Origin: 'https://y.qq.com', Referer: 'https://y.qq.com/portal/player.html' }, params: req.query }).then((response) => { res.json(response.data) }).catch((e)=>{ console.log(e) }) })
然后定义一个函数请求这个接口
function getplaysongvkey(songmid) { const url = '/api/getplaysongvkey' const data = Object.assign({}, commonParam, { g_tk: 5381, loginUin: 0, hostUin: 0, format: 'json', inCharset: 'utf8', outCharset: 'utf-8', notice: 0, platform:' yqq.json', needNewCode: 0, data: {"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch","param":{"guid":"3309754632","calltype":0,"userip":""}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"3309754632","songmid":[""+songmid+""],"songtype":[0],"uin":"0","loginflag":1,"platform":"20"}},"comm":{"uin":0,"format":"json","ct":24,"cv":0}} }) return axios.get(url, { params: data }).then((res) => { return Promise.resolve(res.data.req_0.data.midurlinfo[0].purl) }) }
下面就是发起请求了
getplaysongvkey(musicData.songmid).then((res)=>{ result.push(new createSong(musicData,res)) })
在控制台打印请求成功的内容
可以看到已经拿到了播放地址
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接