获取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
- 我们使用官方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