目标链接:
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来搞。
代码太繁琐,不好贴,就贴个代理吧,思路就是这样子。
这是经过处理后的数据结构,抓取到的播放源链接就是如下蓝色框。
迄今,经测试是正确的是链接地址。
若有意见与建议,请多指教~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。