这个例子的登录非常简单,没有任何加密直接post就行,一点加密和未知参数都没有。
登录成功后我们把access_token和qingting_id拿到,相当于一个登录后的标志如果账号是会员相当于一个会员标志。如果没有登录也有access_token和qingting_id的,只是都是空字符串。不影响抓取免费音频。
音频的真实地址请求了这样一个url:
https://audio.qingting.fm/audiostream/redirect/294280/11604885
其中294280是专辑id,
11604885是当前音频的id

上图带了一些参数比如access_token,qingting_id(登录成功的response中有,示例没有登录所有是空的),另外还有一些比如t是时间戳,python的话处理直接str(round(time.time() *1000)) 就可以了。
device_id=MOBILESITE(不变)。
关键就在于sign(尝试过不加sign会返回一个签名错误)
尝试使用关键字利用全局搜索sign= ,结果真的搜到了,在main.什么什么js里面

这里的sign是u这个变量它是由c这个变量通过一堆加密处理得到的
我们可以控制台输出一下u和c

所以我们就知道了sign实际是加密了请求的其他参数。
createHmac("md5", "fpMn12&38f_2e")代码中这个很重要 !
如果按照缺什么补什么的逻辑,那需要找到m,生成m,过程相当之麻烦。
但是如果懂得一些加密算法的话,应该就会知道Hmac就是一种现成的算法,还有不同的模式MD5是其中一种,需要一个秘钥。
这里什么都告诉你了,Hmac-md5秘钥是fpMn12&38f_2e。
有在线加密的网站,大家可以自行实验下。
以下是生成音频url的代码:

其中album_id是节目id,voice_id是音频id,我是通过关键字搜索发送请求获取的。
好了,以上就是过程,整体来说还是比较简单的,希望大神多指教
网友评论