本次演示的主播作品页地址:http://fanxing.kugou.com/index.php?action=song&id=59416706
首先我们在打开开发者模式切换到Network的情况下刷新一下作品页:
按经验找到返回MV信息的Josn数据接口:http://visitor.fanxing.kugou.com/VServices/Video.OfflineVideoService.getVideoList/59416706-1-0/
并且很容易就能判断出来59416706就是酷狗繁星直播平台每一个主播的唯一ID值,我们只需要把59416706替换为酷狗繁星直播平台别的主播的ID就可以获取到相对应主播的MV作品数据。
解析后的Josn数据视图如下:
经过多页面获取对比验证了每个页面是按尾部的“-1-0”以1来递增:
http://visitor.fanxing.kugou.com/VServices/Video.OfflineVideoService.getVideoList/59416706-1-0/
http://visitor.fanxing.kugou.com/VServices/Video.OfflineVideoService.getVideoList/59416706-2-0/
http://visitor.fanxing.kugou.com/VServices/Video.OfflineVideoService.getVideoList/59416706-3-0/
......
这样子来获取每一页的数据,我们只需要获取到总共有多少页就能知道需要递增爬取多少次,理论上来说返回的MV信息Josn数据里面应该会包含有总页数,而上图解析后的Josn视图里面我们可以看到有一个键值count:404,对应了在图一里的作品(404),也就是说在我们获取第一页数据的时候可以用键值count来计算出一共有多少页(上图我们可以看得到每一页返回15条数据,(404/15=26.9非整数则+1=27页)),我们相对应的就递增爬取27次。
总结一下获取酷狗繁星直播平台主播所有MV作品的过程:
1:首先通过主播作品页获取主播的ID(比如说:59416706)
2:”http://visitor.fanxing.kugou.com/VServices/Video.OfflineVideoService.getVideoList/“+主播的ID+”-1-0/”拼凑出第一页的地址,然后访问这个地址解析返回的Josn数据后从键值count获取到MV作品数量计算出总页数(计算公式:作品数量/15)。
以上就是获取酷狗繁星直播平台主播所有MV作品的过程。
接下来就是解析出MV的视频下载链接,具体的视频直链加密计算在JS里面,感兴趣的可以下断点看一下,我直接写计算获取方法。
我们用这个视频来演示:http://fanxing.kugou.com/mvplay/863608811016167424
这个视频通过开发者工具抓包可以知道视频下载链接如下:
http://fx.v.kugou.com/G063/M00/0E/18/fw0DAFeClOGAA66XASngYXXUWOU046.mp4
而视频下载链接是通过下面链接返回的:http://tracker.v.kugou.com/video/query?pid=6&sign=c9960e452f8ce9c64d9dc0f01ae543b0&hash=d7c09ad0f4879fac1b4d332efecfb2c3
上面链接总共3个参数:
1:pid=6
2:sign=c9960e452f8ce9c64d9dc0f01ae543b0
3:hash=d7c09ad0f4879fac1b4d332efecfb2c3
首先第一个参数经过多个视频比较可以确认是搞定的,不同的视频只有参数2、3会有变化,而参数2需要去计算,参数3的hash则是hashValue,很容易就可以获取的到(如果是接着第一步下来那么我们在获取主播所有MV作品的时候就已经可以在Josn的list里面获取到)。
具体参数2的sign计算方式为
MD5(”hash“+hashValue+"pid6kugou_video"),也就是说:
MD5(hashd7c09ad0f4879fac1b4d332efecfb2c3pid6kugou_video)