q某音乐API接口分析--获取vKey和Sign
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相关推荐
- 记一次酷狗音乐API的获取,感兴趣的可以自己封装开发自己的音乐播放器
1.本教程仅供个人学习用,禁止用于任何的商业和非法用途,如涉及版权问题请联系笔者删除. 2.随笔系作者原创文档,转载请注明文档来源:http://www.cnblogs.com/apresunday/ ...
- 使用豆瓣音乐API笔记
蓝字是链接 豆瓣API V2 API地址: 上面不能用的话,可以试试这个 我这里用的是豆瓣音乐API: 获取音乐 GET https://api.douban.com/v2/music/:id 返回音 ...
- Vue实现仿音乐播放器5-实现今日推荐访问百度音乐API获取数据
前文 前面已经实现了音乐导航菜单的切换,现在要实现主页面的今日推荐功能. 效果 实现 实现首页重定向 当应用初始化时,默认进入主页面home页,所以在router下的index.js下配置: expo ...
- 网易云音乐/QQ音乐API更新,支持多音质切换/MV获取
自从上一版开源过后到现在音乐接口的调用量已经达到了快100W,但是最近由于网易云的更新,导致部分接口不能使用,最近在工作之余抽出时间把API重写. 本次API版本不再使用PHP,使用Java,相比以前 ...
- 最美应用API接口分析
最美应用API接口分析 最美应用API接口分析一.请求版本列表1.1 API二.请求应用配置2.1 API2.2参数列表2.3 返回三.友盟更新3.1 API3.2参数列表3.3 返回四.appleS ...
- 酷狗音乐API数据接口--分析
酷狗音乐Web端音乐API接口数据整理,以下接口数据已整理封装基于Node.js+express的项目 Node-SpliderApi music模块中 本音乐API数据收集仅用于学习研究,请勿将以下 ...
- qq音乐mp3解析php源码,QQ音乐API
QQ音乐API搜索歌曲API: &aggr=1&cr=1&loginUin={3}&format=json&inCharset=GB2312&outCh ...
- QQ音乐API分析记录
我一直是QQ音乐的用户,最近想做一个应用,想用QQ音乐的API,搜索了很久无果,于是就自己分析QQ音乐的API. 前不久发现QQ音乐出了网页版的,是Flash的,但是,我用iPhone打开这个链接的时 ...
- python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...
上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...
最新文章
- 【jsp】通过get和post传值的区别
- 高速跟踪--High-Speed Tracking-by-Detection Without Using Image Information
- 向量时钟算法简介——本质类似MVCC
- 【Android 插件化】VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件化引擎
- 基于oracle的sql优化
- 如何正确运用计算机,如何正确使用电脑
- 数据结构与算法JavaScript (一) 栈
- java 相对路径 文件读取,Java相对路径读取文件
- 基于.NET2.0的System.Net.Mail发送邮件Demo
- P7295-[USACO21JAN]Paint by Letters P【平面图欧拉公式】
- Eclipse自动补全功能轻松设置 || 不需要修改编辑任何文件
- [转载] 2011 ScrumGathering大会简要记录 - 周金根
- boid模型的Matlab程序,基于Boid模型以及吸引—排斥模型的沙丁鱼集群运动行为模拟...
- 用计算机制作简谱,雅乐简谱免费版
- 简易支付系统的架构设计
- oracle dbview用户,关于SQLRecoverableException问题的排查和分析
- 霸道而又暧昧,不黄不暴力的男女关系语录
- life: zz 关于爱情
- python+django高校志愿者活动报名系统vue+elementui
- Pycharm创建conda新环境失败问题
热门文章
- 诺基亚发布NetAct云网络管理系统,为5G网络演进铺路
- 悦读 | 公布你的原则,读瑞.达利欧的《原则》
- hls.js下载m3u8视频播放hls.js
- 深度学习入门笔记(九):深度学习数据处理
- 微服务入门|微服务架构怎么设计
- 联想y700安装黑苹果_【EFI】联想Y700 I7-6700HQ HD530 GTX 960M 1080P 10.14.6 引导下载
- 2020暑期实习 总结
- 迅雷11抢先体验版,免费2T空间可离线下载高速取回
- 【linux】can‘t set line discipline
- Setup time和Holdon time