提示:以下案例仅供参考
在爬取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
微信关注公众号懒皮鼠可查看更多源码及资源