音响风尚圈

音响风尚圈

爬取网易云音乐的评论后,竟有这种发现!

admin 195 69




作者|志颖

责编|胡巍巍


首先分析数据的请求方式

网易云音乐歌曲页面的URL形式为https://music。163。com//song?id=38592976。接下来开始分析数据的请求方式。




我们发现的它是个Post请求,向下滑你会发现这个Post请求还带有数据。



分析加密过程

通过断点调试发现params和encSecKey是由JS脚本中的()函数生成的。


我们发现()函数有4个参数,在浏览器的JS控制台分别对这四个参数进行调试:


{"rid":"R_SO_4_38592976","offset":"0","total":"True","limit":"20","csrf_token":""}

下面我来详细讲解这个变量的发现过程:


然后按下电脑的Esc键打开JS控制台,输入i1x,查看第一个变量:



再看第3页:


再看第4页:


通过这几页的分析,我们可以得到i1x值的变化规律,且可以得到它的一般形式:

{"rid":"R_SO_4_38592976","offset":"0","total":"True","limit":"20","csrf_token":""}
生成随机字符串defgenerate_random_strs(length):string="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"初始化随机字符串random_strs=""whileilength:e=()*len(string)msg是需要加密的明文,如果不是16的倍数则进行填充(paddiing)padding=16-len(msg)%16AES加密defAESencrypt(msg,key):这里使用padding对应的单字符进行填充msg=msg+padding*chr(padding)加密后得到的是bytes类型的数据encryptedbytes=(msg)对byte字符串按utf-8进行解码enctext=('utf-8')returnenctext

然后是RSA加密。首先我简单介绍一下RSA的加密过程。在RSA中,明文,密钥和密文都是数字。RSA的加密过程可以用下列的公式来表达,这个公式非常的重要,你只有理解了这个公式,才能用Python实现RSA加密。

密文=明文EmodN(RSA加密)

RSA的密文是对代表明文的数字的E次方求modN的结果,通俗地讲就是将明文和自己做E次乘法,然后将其结果除以N求余数,这个余数就是密文。

下面来看具体的RSA加密代码实现:

随机字符串逆序排列string=randomstrs[::-1]返回整数的小写十六进制形式returnformat(seckey,'x').zfill(256)

RSA加密后得到的字符串长为256,如果不够长则进行填充(不足部分在左侧添0)。

最后就是获取那两个加密参数:

msg也可以写成msg={"offset":"页面偏移量=(页数-1)*20","limit":"20"},offset和limit这两个参数必须有(js)偏移量offset=(page-1)*20生成长度为16的随机字符串i=generate_random_strs(16)RSA加密之后得到encSecKey的值encSecKey=RSAencrypt(i,e,f)returnencText,encSecKey


获取全部评论

上面我们获取到了两个参数encText和encSecKey,利用这两个参数来构造post表单数据(FormData),即data的值:

params,encSecKey=get_params(page)data={'params':params,'encSecKey':encSecKey}
url=''+str(songid)+'?csrf_token='
html=(url,headers=headers,data=data)

2018AI开发者大会

◆AI工程师必备大会◆

2018AI开发者大会是一场由中美人工智能技术高手联袂打造的AI技术与产业的年度盛会!我们只讲技术,拒绝空谈!

这里有10场技术专题论坛:计算机视觉、数据分析、机器学习、知识图谱、智慧金融、智能驾驶、语音技术、智慧医疗、机器学习工具、自然语言处理。

还有15+硅谷实力讲师团、80+AI领军企业技术核心人物、100+技术大众实力媒体、1500+AI专业开发者