乐趣区

记一次获取QQ音乐播放源链接地址

目标链接:
https://y.qq.com/portal/playe…

分析 network 发现一个请求:

双击打开发现就是歌曲播放源地址

紫棋小姐姐唱歌真好听~
记住这个链接,并且多打开几个试一试,以便进行对比找出规律。
链接比较找规律
经过一波分析,对比几个数据,容易找出链接的构成。
http://dl.stream.qqmusic.qq.com/C400${songmid}.m4a?guid=3878307950&vkey=${vkey}&uin=0&fromtag=66
用了模板字符串的语法,可见 <font color=”red”>songmid</font>、<font color=”red”>vkey</font> 是可变参数,guid、uin、fromtag 是固定参数。
那我们的目标就指向抓取到含这两个数据的接口数据了。
经过一番寻找,晃眼一撇:

咦?~ 这不就是 vkey 嘛。
赶紧结合代码一把梭。

我就知道没那么轻松。
不多截图,正确答案确实是在那个接口里,但是对于我们的目的来说,这里的数据有很多是很相似且冗余的。最终总算还是找到了可以组合的正确通用链接:

红色的两个可以组合,黄色的单个也可以。
往下所述是用的黄色框的,因为更方便,不用单独找 vkey、songmid 来拼接 url 了。
请求正确链接数据
正确的链接找到了,接下来就要在本地写代码请求数据了。
我们来分析下那个链接的 headers

咋一看貌似可以利用 jsonp。
贴主要代码

确实请求到数据了。只是 …

估计服务端做了某些限制 …
既然 jsonp 行不通,那就后端接口代理、用 axios 来搞。
代码太繁琐,不好贴,就贴个代理吧,思路就是这样子。

这是经过处理后的数据结构,抓取到的播放源链接就是如下蓝色框。

迄今,经测试是正确的是链接地址。

若有意见与建议,请多指教~

退出移动版