python实现QQ音乐sign生成

提示:以下案例仅供参考

python实现QQ音乐sign生成

在爬取QQ音乐时,获取下载链接时发现了一个特别奇怪的参数,于是通过调试与分析,发现他是通过js生成的,其生成的逻辑大概是这样: zza+一段随机的小写字符串,由小写字母和数字组成,长度为10-16位+CJBPACrRuNy7和data取md5。这三部分拼接而成,其中md5加密方式可以使用python内置模块hashlib实现。
注意:这里的data是str类型,而不是字典类型。且data的格式有两种,具体可以参照network内的请求参数形式。

代码如下(示例):

import hashlib
def sign_get(songmid):
    #zza+一段随机的小写字符串,由小写字母和数字组成,长度为10-16位+CJBPACrRuNy7和data取md5。
    st = 'abcdefghijklmnopqrstuvwxyz0123456789';
    count = (math.floor(random.randint(10, 16)));
    sign = 'zza'
    for i in range(count):
        sign += st[math.floor(random.randint(0, 35))];
    data = {
     "req": {
     "module": "CDN.SrfCdnDispatchServer", "method": "GetCdnDispatch",
                    "param": {
     "guid": "5634831300", "calltype": 0, "userip": ""}},
            "req_0": {
     "module": "vkey.GetVkeyServer", "method": "CgiGetVkey",
                      "param": {
     "guid": "5634831300", "songmid": ["{}".format(songmid)], "songtype": [0],
                                "uin": "1623838", "loginflag": 1, "platform": "20"}},
            "comm": {
     "uin": 1391345114, "format": "json", "ct": 24, "cv": 0}}
    s ='CJBPACrRuNy7'+str(data)
    s=s.replace("'",'"')
    s=s.replace(' ','')
    s_md5 = hashlib.md5(s.encode('utf-8')).hexdigest()
    sign += s_md5
    return sign,s

微信关注公众号懒皮鼠可查看更多源码及资源

你可能感兴趣的:(python)