在线音乐播放器-----酷狗音乐api接口抓取

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在线音乐播放器-----酷狗音乐api接口抓取相关的知识,希望对你有一定的参考价值。

首先身为一个在线音乐播放器,需要前端和数据库的搭配使用。

在数据库方面,我们没有办法制作,首先是版权问题,再加上数据量。所以我们需要借用其他网络播放器的数据库。

但是这些在线播放器,如百度,酷狗,酷我等在线音乐播放器,是不会提供他们的数据库接口的,所以这个我们需要,在线抓取这些在线音乐播放器的接口,首先,这个事情,是属于违规的。是属于侵犯这些公司的版权的。所以,不能用于商业用途

我们以酷狗音乐为例子,抓取他的连接数据库的API接口

我是用的是谷歌,进入私密模式,因为在这种模式下,不会缓存歌曲

 1. 进入酷狗的官网  www.kugou.com  然后随便打开一首歌曲

技术分享

会出现上面的窗口

F12打开调试者工具

刷新页面,然后记录network中的页面传输信息

技术分享

然后我们会发现,在记录中,有一个数据是加载时间最长的。这个数据,就是页面中数据量最大的,也就是歌曲

筛选数据类型 多媒体

技术分享

然后就发现列表中的音乐

技术分享

查看音乐头信息,就会发现歌曲的地址,

技术分享

我们在新窗口中打开这个地址

技术分享

这就会是一首歌曲

这时候我们,可以在查询一首歌,并添加到列表中

技术分享

这时候我们查看开发者工具中,会最新加载的数据

 

查看这些数据会发现除了歌曲外,还会加载一些文本

 技术分享

查看这些文本的头部,发现,里面会传递一个参数callback。这是回调函数,用来进行json传递的,是传递数据的常用方式。但是这种方式通常是不安全的,所以说,歌曲下载地址一般不是在这里的

技术分享

然后我们会找到一个传递到php页面的

技术分享

查看内容

 技术分享

这里我们会发现有歌词地址,和歌曲名称,歌词,还有一个hash值,查看请求地址.

技术分享

这里我们可以看到,网页向数据库发送了一个hash的数据。我们从中知道,这个hash值是歌曲在数据库唯一编码

接下来,我们只需要知道歌曲的hash值,便可以找到歌曲地址了。

再次打开搜索列表,用开发者工具拦截数据,筛选js,会找到其中这样的数据

技术分享

随便打开其中一个列表我们会发现里面有一个filehash值,复制这段值

并且我们替换到之前查找歌曲时候,查找到的php文件,并替换那个hash值

 技术分享

这时候页面会返回一个json文件

我们可以通过在线json解析器,来格式化这个json

技术分享

这里面有个play_url的参数,里面的值是一个地址

我们可以在新窗口打开这个地址

这里我们发现打开的一个熟悉的窗口,一个MP3,

 技术分享

我们查看歌词列表的请求地址

技术分享

这会有一个keyword的参数,后面是乱码,但是这是一种中文的转码方式,复制这个请求地址,并改变这个keyword的值。

技术分享

返回的结果是一个json的文件,我们来格式化

技术分享

我们观察后其实可以发现,这其实都是由搜索我们设置的那个关键词的歌曲

技术分享

里面会有好多的歌曲

 

我们找到其中一首歌的filehash

技术分享

用之前同样的方法,就可以获得这首歌的MP3的地址,

由此我们获得了这两个url的请求地址,第一个就是歌曲的查询列表,可以获取歌曲的hash值,第二个是歌曲的地址,可以根据一个查询列表中的hash值来获取歌曲的地址

 

http://songsearch.kugou.com/song_search_v2?callback=jQuery191034642999175022426_1489023388639&keyword={歌曲名称}&page=1&pagesize=30&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0&_=1489023388641

 

http://www.kugou.com/yy/index.php?r=play/getdata&hash={歌曲hash值}

 

以上是关于在线音乐播放器-----酷狗音乐api接口抓取的主要内容,如果未能解决你的问题,请参考以下文章

记一次酷狗音乐API的获取,感兴趣的可以自己封装开发自己的音乐播放器

c# 调用QQ音乐、酷狗音乐API

酷狗音乐在线播放器 酷狗音乐播放器在线听歌官方网址

htmlunit+fastjson抓取酷狗音乐 qq音乐链接及下载

酷狗音乐播放器进不了酷狗游戏

酷狗音乐的URL怎么找?