q某音乐API接口分析--获取vKey和Sign

在q某音乐网站中,想要获得一首歌曲的资源链接(必须要这两个参数vKey和Sign,破解有一定的难度)

步骤一:

F12打开开发者工具,在network中点击XHR,筛选ajxa请求(一般的数据请求都是使用ajax),这里这种数据都很简单,没有加密,没有sign(签名,口令等),不做分析

步骤二:

随便点击一个歌单,进入到歌单播放页面(https://y.qq.com/portal/player.html),右边红色圈圈里面的是歌曲的链接地址,一个一个试得出可以使用的地址在req_0.data.midurlinfo[0].purl

将purl拼接url直接访问可以歌曲资源:http://ws.stream.qqmusic.qq.com/C400001GV9Ix0NrZuz.m4a?guid=2849918000&vkey=D30AB7F58D1D6821C6ED837DEFF01E94DBEF70BD3FF0DD5090928E96130B93F59653E7CE4259B5244E9409FFD28745B326C8CE89FA138E2F&uin=0&fromtag=66

步骤三:

多次分析参数,发现该请求只有两个参数在变 sign 和 songmid,- 这个参数是个随机值,不变也可以。(逻辑关系,我们需要这两个参数才能得到vKey,歌曲资源链接是vKey和sign和歌曲songmid拼接组成,其它参数不变,如uin和guid)

步骤四:

我们再往前找,此时发现前面没有一个请求返回的数据跟sign的值一样,就说明sign不是由后端返回过来的,而是由前端js生成的。

这时我们ctrl+f进行关键词查找,搜索sign(关键词的选定需要根据经验来)

这里多次出现sign,说明有很大的可能性是我们要找的sign生成算法,然后打下断点看下结果。


这时我们在控制台输出这个函数,看一下返回的内容。发现正是我们需要的sign。

这时我们只需要把这个函数对应的代码复制下来,准备还原,控制台输出这个函数的代码:

多次断点发现,r(f, e, c, l, t)也是返回这个值。

通过对比,发现 sign 的位数不一样,且生成的签名串不一样,这时,我们进入到加密函数(getSecuritySign())内部,一步一步debug。

最后发现,它其实是动态的生成加密函数名,以及一个固定的加密串和随机函数。通过一个栈结构存储这些数据,并进行调用。

最终还原的代码如下所示:

这段代码由原网站复制得来,未改动

动态生成的执行代码:

function getSign(data) {let str = 'abcdefghijklmnopqrstuvwxyz0123456789';let count = Math.floor(Math.random() * 7 + 10);let sign = 'zza';for(let i = 0; i < count ; i++){sign += str[Math.floor(Math.random() * 36)];}sign += global.__sign_hash_20200305('CJBPACrRuNy7'+JSON.stringify(data));return sign
}

执行结果如下:

与之前的结果进行比较发现后32位是一样的,证明我们的算法是没有问题的

然后再根据sign获得vKey,在purl前面加上域名就能播放歌曲:

q某音乐API接口分析--获取vKey和Sign相关推荐

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

    1.本教程仅供个人学习用,禁止用于任何的商业和非法用途,如涉及版权问题请联系笔者删除. 2.随笔系作者原创文档,转载请注明文档来源:http://www.cnblogs.com/apresunday/ ...

  2. 使用豆瓣音乐API笔记

    蓝字是链接 豆瓣API V2 API地址: 上面不能用的话,可以试试这个 我这里用的是豆瓣音乐API: 获取音乐 GET https://api.douban.com/v2/music/:id 返回音 ...

  3. Vue实现仿音乐播放器5-实现今日推荐访问百度音乐API获取数据

    前文 前面已经实现了音乐导航菜单的切换,现在要实现主页面的今日推荐功能. 效果 实现 实现首页重定向 当应用初始化时,默认进入主页面home页,所以在router下的index.js下配置: expo ...

  4. 网易云音乐/QQ音乐API更新,支持多音质切换/MV获取

    自从上一版开源过后到现在音乐接口的调用量已经达到了快100W,但是最近由于网易云的更新,导致部分接口不能使用,最近在工作之余抽出时间把API重写. 本次API版本不再使用PHP,使用Java,相比以前 ...

  5. 最美应用API接口分析

    最美应用API接口分析 最美应用API接口分析一.请求版本列表1.1 API二.请求应用配置2.1 API2.2参数列表2.3 返回三.友盟更新3.1 API3.2参数列表3.3 返回四.appleS ...

  6. 酷狗音乐API数据接口--分析

    酷狗音乐Web端音乐API接口数据整理,以下接口数据已整理封装基于Node.js+express的项目 Node-SpliderApi music模块中 本音乐API数据收集仅用于学习研究,请勿将以下 ...

  7. qq音乐mp3解析php源码,QQ音乐API

    QQ音乐API搜索歌曲API: &aggr=1&cr=1&loginUin={3}&format=json&inCharset=GB2312&outCh ...

  8. QQ音乐API分析记录

    我一直是QQ音乐的用户,最近想做一个应用,想用QQ音乐的API,搜索了很久无果,于是就自己分析QQ音乐的API. 前不久发现QQ音乐出了网页版的,是Flash的,但是,我用iPhone打开这个链接的时 ...

  9. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

最新文章

  1. 【jsp】通过get和post传值的区别
  2. 高速跟踪--High-Speed Tracking-by-Detection Without Using Image Information
  3. 向量时钟算法简介——本质类似MVCC
  4. 【Android 插件化】VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件化引擎
  5. 基于oracle的sql优化
  6. 如何正确运用计算机,如何正确使用电脑
  7. 数据结构与算法JavaScript (一) 栈
  8. java 相对路径 文件读取,Java相对路径读取文件
  9. 基于.NET2.0的System.Net.Mail发送邮件Demo
  10. P7295-[USACO21JAN]Paint by Letters P【平面图欧拉公式】
  11. Eclipse自动补全功能轻松设置 || 不需要修改编辑任何文件
  12. [转载] 2011 ScrumGathering大会简要记录 - 周金根
  13. boid模型的Matlab程序,基于Boid模型以及吸引—排斥模型的沙丁鱼集群运动行为模拟...
  14. 用计算机制作简谱,雅乐简谱免费版
  15. 简易支付系统的架构设计
  16. oracle dbview用户,关于SQLRecoverableException问题的排查和分析
  17. 霸道而又暧昧,不黄不暴力的男女关系语录
  18. life: zz 关于爱情
  19. python+django高校志愿者活动报名系统vue+elementui
  20. Pycharm创建conda新环境失败问题

热门文章

  1. 诺基亚发布NetAct云网络管理系统,为5G网络演进铺路
  2. 悦读 | 公布你的原则,读瑞.达利欧的《原则》
  3. hls.js下载m3u8视频播放hls.js
  4. 深度学习入门笔记(九):深度学习数据处理
  5. 微服务入门|微服务架构怎么设计
  6. 联想y700安装黑苹果_【EFI】联想Y700 I7-6700HQ HD530 GTX 960M 1080P 10.14.6 引导下载
  7. 2020暑期实习 总结
  8. 迅雷11抢先体验版,免费2T空间可离线下载高速取回
  9. 【linux】can‘t set line discipline
  10. Setup time和Holdon time