获取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调用接口可以看到接口构造为:
  1. http://ws.stream.qqmusic.qq.com/
  2. M500001VfvsJ21xFqb.mp3?
  3. 一串乱七八糟的东西

分析

  • 首先第一部分:大概是域名我们不用看,后面直接用。后面的乱七八糟的东西但是跟在**?**后面,大概是参数,也不管。中间部分看起来像是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我们也可以分三部分,第一部分
  1. http://isure.stream.qqmusic.qq.com/
  2. C4000029cBQ71C3Gba.m4a?
  3. vkey=E7883557BF711B8996C99307A0E507E1F76B9D5C4CEDF616BD2FE703352655414F5C36DD5C87F856274C6A235214F9143716E2AF50394308&guid=6578063259&uin=76812328&fromtag=66
  • 我们在对比一下之前微信官方提供的API:
  1. http://ws.stream.qqmusic.qq.com/
  2. M500001VfvsJ21xFqb.mp3?
  3. guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46

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

  1. 我们使用官方API的域名,后面加我们通过 main titles 歌曲解析出来的 类ID字段和参数。 拼成一个新的URL路径
  2. 这里也可不拼,本人尝试过直接使用直链放入微信小程序中,也可以访问
http://ws.stream.qqmusic.qq.com/C4000029cBQ71C3Gba.m4a?vkey=9EB978F0CFD9A7C738E46540141FDE66721FECC8F4F0727938978D9A6074FDA7A09935A44413BFBF04DD1447312044B93CE4058E0D3069E6&guid=6578063259&uin=76812328&fromtag=66
  1. **这里我们先测试一下URL是否有效,打开postman,输入URL,回车

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

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

  1. 编译运行

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


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

最后,

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

感谢阅读!

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

  1. php获取QQ音乐直链,微信小程序-获取QQ音乐直链

    获取QQ音乐直链-用于微信小程序 补充:以下方法获取的直链会有失效期,如果大家有嗅探等工具可以直接上QQ音乐网站获取资源的直链,此方法仅供参考. 问题起源: 最近在做小程序音频播放这一块的时候发现一个 ...

  2. 微信小程序版QQ音乐

    来源 <a href="http://www.see-source.com:80/weixinwidget/downloadZip.html?wid=161">实例源码 ...

  3. 微信小程序-仿QQ音乐

    歌曲来源:QQ音乐 说明 目前只有体验版,如果有兴趣的同学可以私聊我,我帮您加入,名额有限. 因为个人开发者无法发布在线音乐播放小程序,所以开发该小程序目的只为学习小程序开发: 小程序涉及到到所有歌曲 ...

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

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

  5. android获取小程序音频时长,最新微信小程序获取音频时长与实时获取播放进度...

    #微信小程序获取音频时长与实时获取播放进度 在小程序官方文档中 audio 注意:1.6.0 版本开始,该组件不再维护.建议使用能力更强的 wx.createInnerAudioContext 接口 ...

  6. 微信小程序获取用户手机号--官方示例

    微信小程序获取用户手机号–官方示例 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNu ...

  7. .Net之微信小程序获取用户UnionID

    前言: 在实际项目开发中我们经常会遇到账号统一的问题,如何在不同端或者是不同的登录方式下保证同一个会员或者用户账号唯一(便于用户信息的管理).这段时间就有一个这样的需求,之前有个客户做了一个微信小程序 ...

  8. 微信小程序获取unionid为空

    微信小程序获取unionid为空 原因:未绑定微信开放平台 绑定步骤 原因:未绑定微信开放平台 最新在调试一个新的微信小程序,因为要对web授权登录.app授权登录.小程序授权登录:几种登录场景根据u ...

  9. 最新微信小程序获取音频时长与实时获取播放进度

    #微信小程序获取音频时长与实时获取播放进度 在小程序官方文档中 audio 注意:1.6.0 版本开始,该组件不再维护.建议使用能力更强的 wx.createInnerAudioContext 接口 ...

  10. 微信小程序获取绑定授权用户手机号getPhoneNumber-全流程及手机号带*号问题

    微信小程序获取微信绑定授权手机号getPhoneNumber全流程及出现手机号带*号问题详解 微信小程序文档中给出如下示例 获取微信用户绑定的手机号,需先调用login接口. 因为需要用户主动触发才能 ...

最新文章

  1. ATS线上报告个别日志过大无法写入问题的解决方法
  2. Android入门教程 (二) 第一个App HelloWorld
  3. 利用EntityFramework获得双色球数据库
  4. 数学图形(1.32) 鸡蛋
  5. 高速掌握Lua 5.3 —— 字符串库 (2)
  6. 互联网大厂高频重点面试题
  7. SQL Server 堆表行存储大小(Record Size)
  8. HTML/CSS/动画
  9. SLAM: 单目视觉SLAM的方案分类《机器人手册》
  10. codeforces gym100959 I - Robots(稠密图建图优化)
  11. 华为徐直军:以持续创新加快数字化发展
  12. 机器学习-KMeans聚类 K值以及初始类簇中心点的选取
  13. php对用户输入的非标准格式日期匹配
  14. utf-8 汉字对照表
  15. Ubuntu下好用的文档比较工具Meld,代替Notepad++的文档对比功能?
  16. Stuts2学习——HelloWorld
  17. ikbc键盘win键失灵原因
  18. 浏览器返回数据量过大报‘failed to load response data: Request content was evicted from inspector cache’
  19. 无人车采用纯跟踪算法跟随离线路径(ROS,C++实现)第一部分
  20. ACM常见问题之【三角形的外心】

热门文章

  1. 开源数据库学习资料汇总
  2. 163编辑器 自适应宽度 +更改高度
  3. python tkinter应用:文本编辑器
  4. linux下mac风格菜单栏,Mac 菜单栏样式太单调?不妨用这个小工具自己动手定制
  5. MFC Windows 程序设计(一)-程序员的解放
  6. Java编程思想目录
  7. 【计算机网络】第一部分 概述(1) 数据通信和网络绪论
  8. 想法独特 上半年最具特色摄像头集锦
  9. Unity web player无法正常使用
  10. Go 语言高性能编程