获取QQ音乐直链-用于微信小程序

补充:以下方法获取的直链会有失效期,如果大家有嗅探等工具可以直接上QQ音乐网站获取资源的直链,此方法仅供参考。

问题起源:

最近在做小程序音频播放这一块的时候发现一个问题,就是微信官方提供的那首歌曲 此时此刻-许巍 真的好难听!测试组件的过程中听了强忍着听了无数遍。最终终于忍不下去决定要改变一下,但是从哪获取其他音频呢(除了从自己后台)。只能从网上了,调用QQ音乐,网易云音乐API等。但是考虑到这是微信小程序,所以保险还是选择调用QQ音乐(毕竟是一家的~)。可是随后却发现想调用QQ音乐APi并没有自己想的那么简单。网上也没有找到一份像样的教程。最后再经过一阵摸索之后,自己终于还是实现了这个功能,这里记下过程,希望能给到大家帮助!!

"http://ws.stream.qqmusic.qq.com/

M500001VfvsJ21xFqb.mp3?

guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46

分析官方提供的API:

这里我们观察微信小程序官方提供的API调用接口可以看到接口构造为:

http://ws.stream.qqmusic.qq.com/

M500001VfvsJ21xFqb.mp3?

一串乱七八糟的东西

分析

首先第一部分:大概是域名我们不用看,后面直接用。后面的乱七八糟的东西但是跟在**?**后面,大概是参数,也不管。中间部分看起来像是ID类似的东西,我们这里猜测中间部分大概就是不同音乐的ID标识字段了。

开始动手

想要调用QQ音乐的API,首先我们的思路肯定是从网站上查有没有提供的官方API。

好像是有,我们点进去看看

里面有一堆说明和方法,并且也没有导航栏和明确点的解释,看起来很费劲(内心感觉QQ音乐官方并不太想让大家调用)。如果这样下去的话估计想写出一个正确的API需要把文档看的差不多才行,太浪费时间!这个方法,暂时PASS掉,留着保底用。

思考

接下来怎么办呢,我们来想一下,既然官方提供的API把标识字段直接写到URL里面,那么说明其他音乐的请求里面可能也是包含这一些字段的,我们可以试着去通过分析他的网络请求去找看有没有这些信息。

既然这样的话我们就去试试,首先打开QQ音乐在线网站:

输入我们想找的歌曲名并搜索

找到歌曲点播放(有的网页可能会弹不出播放页面,这个原因是浏览器的设置问题,在浏览器 设置->高级设置->内容设置->弹出式窗口和重定向 选成允许)

然后弹出播放页面:

这时候我们打开开发者工具(WINDOWS快捷键为F12 mac为option+command+J)

刚打开里面可能会有一些链接,也可能没有,不管,我们这里为了防止干扰先清空数据

获得空白页面

然后我们刷新页面,获取一次完整的网络请求,这一步很重要,因为想要分析他的网络请求,就必须要要获取这个页面完整的请求,防止漏掉请求!

然后获取了完整的一次请求:

这么多的请求看的人眼花缭乱,到底哪些才是我们需要的数据呢。这里我们想一下既然这个请求返回的是音乐流,那么他肯定是比较大的,我们这里看一下哪些请求的Size是最大的

其他的Size大部分是几百b或者几十k,这个有1.2M,看起来应该是最大的,我们点开这个请求看有没有我们想要的东西。

咱们看他的请求头里面的信息:

http://isure.stream.qqmusic.qq.com/C4000029cBQ71C3Gba.m4a?`vkey=E7883557BF711B8996C99307A0E507E1F76B9D5C4CEDF616BD2FE703352655414F5C36DD5C87F856274C6A235214F9143716E2AF50394308&guid=6578063259&uin=76812328&fromtag=66`

这里URL我们也可以分三部分,第一部分

http://isure.stream.qqmusic.qq.com/

C4000029cBQ71C3Gba.m4a?

vkey=E7883557BF711B8996C99307A0E507E1F76B9D5C4CEDF616BD2FE703352655414F5C36DD5C87F856274C6A235214F9143716E2AF50394308&guid=6578063259&uin=76812328&fromtag=66

我们在对比一下之前微信官方提供的API:

http://ws.stream.qqmusic.qq.com/

M500001VfvsJ21xFqb.mp3?

guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46

惊喜的发现他们除了域名之外其他部分惊人的相似,我们这里基本就可以确定域名后面跟的那些就是一个音乐的唯一标识和类ID字段了。不过这还不够,我们还没有得到最后的答案,接下来我们开始求证我们的想法!

我们使用官方API的域名,后面加我们通过 main titles 歌曲解析出来的 类ID字段和参数。 拼成一个新的URL路径

这里也可不拼,本人尝试过直接使用直链放入微信小程序中,也可以访问。

http://ws.stream.qqmusic.qq.com/C4000029cBQ71C3Gba.m4a?vkey=9EB978F0CFD9A7C738E46540141FDE66721FECC8F4F0727938978D9A6074FDA7A09935A44413BFBF04DD1447312044B93CE4058E0D3069E6&guid=6578063259&uin=76812328&fromtag=66

**这里我们先测试一下URL是否有效,打开postman,输入URL,回车

接口的测试没有问题,终于大功告成了!!可以开香槟庆祝了吗? 不对!! 我们还少了关键的一步,我们的最终目的是在微信小程序中引用这个音乐,所以最后我们还要在小程序中测试一下

打开微信小程序,替换原来官方提供的API

编译运行:

运行没问题!可以播放,终于大功告成!这个简单的小案例加深了我对调用API的理解,同时也深刻的理解编码的过程中多思考,遇到陌生的情况,我们要冷静多思考。

参考文章:2018最新版QQ音乐api调用(原创) - CSDN博客

最后,

文中如有错误或问题请大家指正,

感谢阅读!

php获取QQ音乐直链,微信小程序-获取QQ音乐直链相关推荐

  1. 微信小程序python解析获取用户手机号_微信小程序获取用户手机号

    获取微信用户绑定的手机号,需先调用wx.login接口. 小程序获取code. 后台得到session_key,openid. 组件触发getPhoneNumber 因为需要用户主动触发才能发起获取手 ...

  2. 小程序获取城市经纬度_微信小程序获取当前所在城市的方法

    现在很多企业商家为了提供更准确的服务,基本都要获取用户当前所在的地理位置,城市是其中最基本的.而微信小程序官方提供的API只能获取当前地理位置的经纬度,需要经过第三方转换才可以得到我所需的城市名,经过 ...

  3. 微信小程序python解析获取用户手机号_微信小程序获取用户手机号详解

    最近在做一款微信小程序,需要获取用户手机号,具体步骤如下: 流程图: 1.首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话 ...

  4. uni-app微信小程序生成自定义参数二维码,跳转小程序指定页面,获取参数;uni-app微信小程序获取二维码自定义参数;微信小程序生成动态参数二维码;uni-app微信小程序获取动态参数二维码;

    一.场景需求: 在小程序个人名片页面A页面,生成用户的个人名片二维码(该二维码携带用户的唯一标识id):微信扫一扫或长按图片识别这个二维码,可以跳转到小程序的B页面,并且在B页面拿到二维码上的唯一标识 ...

  5. 微信小程序获取openid和session_key并且把openid存入数据库

    微信小程序开发交流qq群   581478349 微信小程序获取openid和session_key并且把openid存入数据库.已经调用openid的demo 前后端代码都有,后端php实现 在其它 ...

  6. PHP 微信小程序获取用户信息

    小程序授权应用场景:先拿到用户信息(先wx.login获取code,code换取用户session_key,再wx.getuserInfo获取到用户的encryptedData iv ,再通过调用官方 ...

  7. 微信小程序获取当前页面url

    微信小程序获取当前页面url 微信小程序获取当前页面的URL地址

  8. 微信小程序获取住户地区信息

    微信小程序获取住户地区信息 微信小程序获取住户地区信息 微信小程序获取住户地区信息 1.现在app.js里面配置如下 { //向用户申请获取授权"permission": {&qu ...

  9. 微信小程序获取Onenet温湿度数据并控制灯亮灭

    ​ 其实之前就写过类似的文章,但是看过我博客的朋友就知道,我是先写微信小程序获取onenet,然后再写esp32上云到onenet.一篇是ESP32-C3通过MQTT协议把温湿度上传到OneNet平台 ...

最新文章

  1. 大二发SCI!这位985大学学霸,获MIT博士全奖!
  2. Spring系列之beanFactory与ApplicationContext
  3. 2021暑假每日一题 【week9 完结】
  4. microsoftexchange邮箱容量怎样看_企业邮箱申请注册的要求有哪些?_网站建设_创客网络...
  5. 面试官:谈谈MySQL的limit用法、逻辑分页和物理分页
  6. PyTorch 1.6 发布:原生支持自动混合精度训练并进入稳定阶段
  7. APP自动化测试系列之Desired Capabilities详解
  8. 第 20 章 观察者模式
  9. CDHtmlDialog探索----WebBrowser扩展和网页Javascript错误处理
  10. 最详细教学--实现win10 多用户同时远程登录内网机--win10+frp+rdpwrap+阿里云服务器
  11. AMS1117-3.3(线性稳压器(LDO))
  12. ruijie交换机lacp动态_vmware esxi 做链路聚合LACP踩坑
  13. mongodb与mysql相比的优缺点
  14. 看图工具MassiGra使用指南
  15. 大数据环境搭建 —— VMware Workstation 安装详细教程
  16. 利用css特性布局页面制作京东特价框
  17. 和绅的女人们——汉人、黑人、白人、还有他的“干”女儿
  18. GridView动态添加列并判断绑定数据DataTable的列类型控制展示内容
  19. 自然语音处理(NLP)系列(四)——命名实体识别 (NER)
  20. C语言---水仙花数

热门文章

  1. 有向图的强连通分量——银河
  2. 微软正式发布Chromium Edge开发预览版
  3. Vitamio的使用
  4. 研究生周报(第十九周)
  5. 从头开始做一个智能家居设备:MQTT协议及使用
  6. php5217 0day,知道创宇:最新版DEDECMS存SQL注入0day漏洞
  7. dakai微信小程序 ios_苹果6s微信小程序进不去 苹果小程序怎么弄出来
  8. 动量守恒和角动量守恒结果不同可能原因
  9. 联机/中断网络磁盘驱动器对话框
  10. html设置边框颜色