原文链接:https://littlefish33.cn/MusicApi/

  • 写在前面
  • 酷狗音乐
    • 歌曲搜索
    • 获取音乐下载地址
    • MV搜索
    • 获取MV下载地址
  • QQ音乐
    • 获取最新音乐
    • 获取推荐歌曲
    • 歌曲搜索
    • 获取歌曲播放链接
    • 获取歌词
  • 网易云音乐
  • 解析网页数据初尝试

写在前面

​ 一开始现操期中课程设计想要做一个可以共享各大音乐平台的音乐播放器,而这些音乐平台都没有提供API接口(很正常ヾ(・ε・`*) ),所以研究了一下酷狗音乐、QQ音乐、网易云音乐的网页版,通过网页版来获取数据;然而最后因为时间的关系课程设计只使用了网易云音乐,emm。。。期中课程设计是团队合作完成的,项目链接,如果之后有空的话也会写篇博客简要介绍一下我们的期中课程设计(~ ̄▽ ̄)~

​ 说回正题,这篇博客首先会分享一下那时候收集到的API,这里有的是大神已经找好的,有一些是自己解析网页版资源得到的,仅供学习研究(正经脸);然后会介绍一下是怎么解析网页版的数据的,不过涉及到解密的部分我就不会啦,逃。。。顺带一提,这个还是挺有用的,利用这个方法制作了一个自动签到的脚本,虽然最后只随机分到了四个钥匙扣(为毛分不到抱枕嘞,(ノДT))继续逃。。。

酷狗音乐

歌曲搜索

方法一:

url:http://songsearch.kugou.com/song_search_v2

必选参数:keyword(关键字)
可选参数:page(第几页),pagesize(一页的搜索结果数目)

eg:

http://songsearch.kugou.com/song_search_v2?keyword=%E5%86%8D%E9%A3%9E%E8%A1%8C&page=1&pagesize=30

方法二:

url: http://mobilecdn.kugou.com/api/v3/search/song

必选参数:keyword(关键字)
可选参数:page(第几页),pagesize(一页的搜索结果数目)

eg:

http://mobilecdn.kugou.com/api/v3/search/song?keyword=%E5%86%8D%E9%A3%9E%E8%A1%8C&page=1&pagesize=10

获取音乐下载地址

首先,我们需要上面方法二搜索结果的hash:

获取MV总共有两种方法

方法一:

url:http://trackercdn.kugou.com/i/v2/?cmd=25

必选参数:

hash:上面的hash全小写

key:对上面的hash加盐值(SALT)kgcloudv2,然后进行md5加密

behavior:download

eg:

http://trackercdn.kugou.com/i/v2/?cmd=25&key=49f701e8b36115d84c13d5d7decf2603&hash=d9887aecacd56ddc63786ea0028015b4&behavior=download

方法二:

url:http://trackercdn.kugou.com/i/v2/?cmd=26

必选参数:

mid:0(可以选其他值)
userid:0(可以选其他值)
appid:1005(必须为1005)

behavior:play

version:0

vipType:0

token:0

hash:上面的hash全小写

key:对上面的hash加盐值(SALT)kgcloudv2100500(kgcloudv2后面的值就是 appid+mid+userid),然后进行md5加密

eg:

http://trackercdn.kugou.com/i/v2/?cmd=26&key=6d40e212383d3c45633f8e8f1e332d76&hash=d9887aecacd56ddc63786ea0028015b4&behavior=play&mid=0&appid=1005&userid=0&version=0&vipType=0&token=0

MV搜索

url : http://mvsearch.kugou.com/mv_search

必选参数:keyword(关键字)

可选参数:page(第几页),pagesize(一页的搜索结果数目)

eg:

http://mvsearch.kugou.com/mv_search?&keyword=%E5%86%8D%E9%A3%9E%E8%A1%8C&pagesize=30&page=1

获取MV下载地址

首先,我们需要上面搜索MV返回结果的MvHash

如图:

获取MV总共有四种方法:

方法一:

url:http://trackermv.kugou.com/interface/index/cmd=4

必选参数:

hash:上面的MvHash全大写

key:对上面的MvHash加盐值(SALT)kgcloud,然后进行md5加密

ext:mp4

eg:

http://trackermv.kugou.com/interface/index/cmd=4&hash=4CFA5311D22BA49BAFCEA9B9E992FBF7&key=83dfaed92e992719954c37a97ccfce94&ext=mp4

方法二:

url:http://trackermv.kugou.com/interface/index/cmd=100

必选参数:

hash:上面的MvHash全大写

key:对上面的MvHash加盐值(SALT)kugoumvcloud,然后进行md5加密

ext:mp4

eg:

http://trackermv.kugou.com/interface/index/cmd=100&hash=4CFA5311D22BA49BAFCEA9B9E992FBF7&key=fe3dd52c9760c4d7cd25f28666556bd0&ext=mp4

这个可以返回所有的mv链接

方法三:

url:http://trackermv.kugou.com/interface/index/cmd=103

必选参数:

hash:上面的MvHash全大写

key:对上面的MvHash加盐值(SALT)kugoumvcloud,然后进行md5加密

ext:mp4

eg:

http://trackermv.kugou.com/interface/index/cmd=103&hash=4CFA5311D22BA49BAFCEA9B9E992FBF7&key=fe3dd52c9760c4d7cd25f28666556bd0&ext=mp4

方法四:

url:http://trackermv.kugou.com/interface/index/cmd=104

必选参数:

hash:上面的MvHash全大写

ext:mp4

eg:

http://trackermv.kugou.com/interface/index/cmd=104&hash=4CFA5311D22BA49BAFCEA9B9E992FBF7&ext=mp4

QQ音乐

获取最新音乐

url:

https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?uin=0&notice=0&platform=h5&needNewCode=1&tpl=3&page=detail&type=top&topid=27

获取推荐歌曲

url:

https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?notice=0&platform=h5&tpl=3&page=detail&type=top&topid=36

歌曲搜索

url:

https://c.y.qq.com/soso/fcgi-bin/client_search_cp?aggr=1&cr=1&flag_qc=0

必选参数:w(关键词)

可选参数:p(相当于上面的page),(相当于上面的pagesize)

eg:

https://c.y.qq.com/soso/fcgi-bin/client_search_cp?aggr=1&cr=1&flag_qc=0&p=1&n=20&w=%E5%86%8D%E9%A3%9E%E8%A1%8C

获取歌曲播放链接

首先,我们需要上面API提供的songmid

如图:

url:http://ws.stream.qqmusic.qq.com/songmid.m4a

(这里的songmid替换为上面的songmid)

必选参数:

fromtag:0

guid:一个随机的9位数

eg:

http://ws.stream.qqmusic.qq.com/C100000Fc2iQ4eBEei.m4a?fromtag=0&guid=126548448

获取歌词

获取歌词就比较麻烦了,emm,

首先,我们需要先获取一个vkey:

例如:

https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?format=json205361747&platform=yqq&cid=205361747&songmid=000Fc2iQ4eBEei&filename=C400000Fc2iQ4eBEei.m4a&guid=1684916857

上面链接中的songmid需要替换为对应的songmid,filename需要替换为对应的C400 + songmid + .m4a

上面的链接会返回一个json字符串文件,其中就有我们要的vkey:

因为QQ音乐还要验证我们的请求头信息,所以简单地在浏览器输入一个url是不能成功的,所以,我们需要使用代码伪装我们的请求头,这里使用python(py大法好)获取歌词信息:

def lrc_save(self, path=os.path.join(os.path.abspath('./'), 'song')):''' 保存歌词 '''headers = {"Referer": "https://y.qq.com/portal/1player.html","Cookie": "skey=@LVJPZmJUX;p",}url = 'https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_new.fcg?g_tk=753738303&songmid=' + self.song_mid;lrc_data = requests.get(url, headers=headers)if lrc_data.status_code != 200:print('歌词不存在或网络错误')return Falselrc_dict = json.loads(lrc_data.text[18:-1])lrc_data = base64.b64decode(lrc_dict['lyric'])with open(os.path.join(path, self.save_title + '.lrc'), 'w') as fr:try:fr.write(lrc_data)except TypeError:fr.write(bytes.decode(lrc_data))# 若有翻译歌词if lrc_dict.get('trans'):lrc_data = base64.b64decode(lrc_dict['trans'])with open(os.path.join(path, self.save_title + '-trans.lrc'), 'w') as fr:try:fr.write(lrc_data)except TypeError:fr.write(bytes.decode(lrc_data))print('歌词下载完成')print(os.path.join(path, self.save_title + '.lrc'))return True

网易云音乐

网易云音乐的API算是最全的了,感谢@Binaryify大神提供的API:NeteaseCloudMusicApi

解析网页数据初尝试

以酷狗音乐为例(因为酷狗音乐的搜索不涉及加密,最简单(~ ̄▽ ̄)~ );打开浏览器开发者工具(DevTools),之后打开Network选项卡,在这里我们可以看到接收到的所有数据;

进行搜索,我们就可以看到Network选项卡中同步更新着接收的数据。

从接收的数据项中我们可以找到含有搜索结果的数据项,此时我们可以查看Header

这里包含了请求的信息,各参数的意思看一下就知道了,可以看到Request URL为:

http://songsearch.kugou.com/song_search_v2?callback=jQuery112409228444210604791_1532860990338&keyword=%E5%86%8D%E9%A3%9E%E8%A1%8C&page=1&pagesize=30&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0

删除一些可选项,最后的结果就是:

http://songsearch.kugou.com/song_search_v2?keyword=%E5%86%8D%E9%A3%9E%E8%A1%8C&page=1&pagesize=30

这和我们上面酷狗音乐搜索歌曲的API一致

有一些网站还有对请求头进行验证,这时候就需要伪造请求头了,如上面QQ音乐的歌词获取

而且大部分网站都是对请求进行加密的,这就需要查看代码(或解密,这个真的不会)了,在Network选项卡里包含了一些代码文件,有时候需要看代码才能知道怎么弄了。

酷狗音乐、QQ音乐、网易云音乐API相关推荐

  1. iOS7 下载酷狗 微信 抖音 网易云音乐app ipk的下载办法App Store不能下载应用程序

    iOS7或者更老的苹果系统,App Store不能下载应用程序的解决办法 打开WiFi将DNS改为216.146.35.35,点击"续租" 这是因为苹果官方封堵了32位软件下载 下 ...

  2. 音乐APP攻防战:QQ、酷狗、酷我、网易云,谁会成为下一个虾米?

    作为最能进入人心的"声音",音乐早已成为人们生活中不可缺少的一部分. 随着互联网技术的发展与智能手机的普及,在线音乐成为数字经济的主要模式之一.据<2020中国音乐产业发展报 ...

  3. Ubuntu18.04安装QQ、网易云音乐、百度云盘、搜狗输入法

    Ubuntu18.04安装QQ.网易云音乐.百度云盘.搜狗输入法 一:安装QQ (1)进入QQ官网下载对应的linux版本的.deb文件 官网链接:https://im.qq.com/ (2)下载成功 ...

  4. 音乐类产品——“网易云音乐”app交互原型模板(免费使用)

    网易云音乐虽是一款音乐app,但有人说它也是社交界的一股清流以及一匹黑马.音乐带给人的感染,激发着很多人在这里表达着他们的情绪和心声.网易云音乐上的真实用户点评,不仅被印在地铁的广告牌上,还在朋友圈频 ...

  5. Manjaro快速上手指南-微信、TIM/QQ、网易云音乐、WPS等等

    笔者环境: 从一个好用的编辑器开始吧 vim sudo pacman -S vim 可能需要更新下库:sudo pacman -Syy 诶,还是安装失败了(没失败的跳过) 异常了类似与:/usr/bi ...

  6. 将qq音乐歌曲导入网易云音乐

    早上打开朋友圈,发现了"90后", "周杰伦", "稻香"等词, 于是打开网易云, 想刷一下周杰伦的歌, 但发现网易云内周杰伦的歌早下架了, ...

  7. ubuntu QQ安装 网易云音乐 rar文件 截屏软件Shutter 图片编辑pinta 文字软件typora 视频播放器smplayer

    一.ubuntu桌面背景 https://www.jb51.net/os/Ubuntu/495386.html (1)方法一,ubuntu自身就可以更改.在桌面右键选择,即可. (2)安装unity- ...

  8. 卖掉亲生“百度音乐”,注资“网易云音乐”,百度到底要干嘛?

    近日,网易云音乐达成新一轮融资,投资方包括百度.泛大西洋投资集团等,消息一出即刻引起坊间热议,可以说百度又下了一步好棋. 放眼国内,互联网音乐市场已呈现"四国鼎立"腾讯音乐.网易云 ...

  9. 虾米收藏音乐迁移到网易云音乐方法及工具

    前言 怎样把虾米歌单导入网易云音乐? 据说之前的网易云音乐是支持虾米导入的,不过这种明显的抢人手法各大音乐上自然不能容忍,虾米的入口即将关闭,而酷狗的音乐列表导出功能在最新版本中也已经取消,不过目前W ...

  10. 网易云音乐开发--通过网易云音乐api,游客登录页面验证效果实现

    收集表单项数据,event对象传参 登录流程 1.收集表单项数据 2.前端验证 1)验证用户信息(账号,密码)是否合法 2)  前端验证不通过就提示用户,不需要发请求给后端 3)前端验证通过了,发请求 ...

最新文章

  1. 皮一皮:外语学的好,就是这么溜~
  2. 微信小程序图片轮转播放
  3. linux shell脚本写法,linux: 常用shell脚本写法
  4. flask tutorial = make a blog :) flask 搭建博客系统从零开始!
  5. linux硬盘分区为什么总有1M,3步实现制作并挂载自己的Linux硬盘分区
  6. iframe的2个问题
  7. [Swift通天遁地]一、超级工具-(11)使用EZLoadingActivity制作Loading加载等待动画
  8. 10分钟掌握运输问题(一)
  9. c语言bubblesort函数,C++实现冒泡排序(BubbleSort)
  10. 【无标题】AMAZINGIC晶焱科技:预防TVS闩锁风险的方法与实际案例分析
  11. python3实用小工具--商品库存查看工具(附源码)
  12. Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式
  13. mysql建立序列相关操作 sequence
  14. 计算机网络-自顶向下方法 第三章课后习题答案(第七版)
  15. matlab生成随机数,matlab随机数生成方法
  16. Javaweb自驾游景点查询网站设计与实现
  17. 随机权重的PSO算法
  18. 前后端分离的企业级微服务多租户系统架构,快速开发平台!
  19. wifi卡慢延迟高_家里WIFI越用越卡?教你3个小方法,彻底解决网速慢、卡顿等问题...
  20. ajax(java)

热门文章

  1. Either类java_基于Java8的Either类
  2. 工业级ADSL有线路由器/远程视频监控专用路由器
  3. 在线验证18位身份证
  4. 使用HTML批量拼图
  5. iOS--相册视频MOV转MP4
  6. 移动建站工具(一):分秒钟将Web网站移动化
  7. 上海 政府性 常用网站
  8. MySQL系列 -2 创建数据库 并 分配用户远程访问权限
  9. APP推广要做哪些?渠道?方案?竞争分析?
  10. MySQL数据库的高级SQL语句