记一次获取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

用了模板字符串的语法,可见songmidvkey是可变参数,guid、uin、fromtag是固定参数。

那我们的目标就指向抓取到含这两个数据的接口数据了。

经过一番寻找,晃眼一撇:

咦?~ 这不就是vkey嘛。

赶紧结合代码一把梭。



我就知道没那么轻松。

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

红色的两个可以组合,黄色的单个也可以。

往下所述是用的黄色框的,因为更方便,不用单独找vkey、songmid来拼接url了。

请求正确链接数据

正确的链接找到了,接下来就要在本地写代码请求数据了。

我们来分析下那个链接的headers

咋一看貌似可以利用jsonp。

贴主要代码

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

估计服务端做了某些限制...

既然jsonp行不通,那就后端接口代理、用axios来搞。

代码太繁琐,不好贴,就贴个代理吧,思路就是这样子。

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

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

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

你可能感兴趣的:(axios,javascript)