今天听到一首歌《分飞》,想起一个学姐在唱吧录的版本,唱的很好听,当时还充了金币导那首歌。再登录唱吧,发现导出不了了,现在导歌曲也不是用金币,而是开通会员了。于是研究了一下,发现了一免费导出音乐的方法。

首先,打开charles,手机连上代理看一下请求。惊奇发现,这些关键接口居然是不https的,喜出望外。

图片

这一大坨都是接口请求,接口名字也很含糊。一个一个查看请求结果,找到这首歌的详情接口,复制响应信息到json.cn

图片

找到作者的ID或者首页地址。这才是我们要的信息。唱吧官网是没有入口找到作者的首页的,前面的铺垫都是为了找到这个首页。接下来,进入作者首页,就可以看到她的歌曲列表了。歌曲支持网页在线播放。

图片

进入播放页,打开网页控制台,查看请求。然后点击播放

图片

这样就找到这首歌了。点击这首歌的请求,在新标签页打开,就下载到本地了。

再研究一下,可以看到歌曲的地址是http://upscuw.changba.com/*.mp3,填入歌曲的ID就可以直接播放下载了。这个歌曲ID其实就是上图的响应里面的workid

不得不说,唱吧的技术不太严谨。

首先,客户端接口请求一定要是https的,不然无异于裸奔。

其次,唱吧歌曲导出是一个收费业务,那么网页播放就应该做的更好一点。这一块我不太了解,但是我想可以尝试加密,或者分段传输。直接这么一个HTTP请求下载音频播放,开发省事了,但是完全没有安全性。甚至,如果我想的话,可以写个爬虫,批量导出作者的所有歌曲。

这个方法在2019-12-5号有效,后面如果有调整,可能就失效了。