网易云音乐评论爬虫—js参数加密
目标:生成网易云音乐评论请求中 params 和 encSecKey 两个参数
(难度中等,更多的是熟练工具使用)
参数.jpg
面板查找.jpg第一步:找到加密参数位置,直接 ctrl+F 搜 encSecKey ,找到参数生成位置
可以发现两个参数是通过 windows.aersea 这个函数加密的,它传入了四个参数,找到 windows.aersea 的定义,如下
asrsea.jpg
继续找函数 d
func d.jpg
这就是加密的函数 ,一共调用了 a,b,c,d 四个函数(a,b,c就在上面)
第二步:构造四个参数
函数 d 一共有四个参数,打个断点看一下都是什么
断点.jpg4个参数.jpg
这里有个大坑,不知道为什么输出的四个参数都是常量,显然有问题,因为这两个参数控制翻页,但是并没有看到相关变量(现在我也不知道问题出在哪,真心求教)
一种办法不行,就换另一种,Fiddler抓包
首先把加密文件保存下来,打开,alert 一下我们要查看的变量
修改.jpg
然后把 fiddler 里的文件替换为修改过后的文件,记得点 save
fiddler.jpg
重新刷新网页
这回发现参数有了变化
第一个参数.jpg
参数2.jpg 参数3.jpg 参数4.jpg
第一个参数就是变量, rid 为歌曲 id ,offset 很常见了,控制翻页的
第三步:分析加密函数
简单分析一下四个函数
a 函数是生成长度 16 的随机字符串,很好理解
b函数是 AES 加密,一共两次
第二次AES加密结果.jpg
c函数是 rsa 加密
第四步:函数实现
可以选择 python 重构(如果你喜欢的话),也可以用 js 库执行函数,这里用第二种方法(因为第一种试过坑多,实力不允许我这样做)
我电脑里装了 node ,所以会先用它调试,注意一下(直接用 execjs 这些也可以)
a 函数很简单,直接复制运行就可以,b函数aes加密直接复制运行就可以, node 环境需要下载个包导入,也很简单
下载库.jpg
c函数 rsa 加密,不看不知道,rsa 的加密方法真的多如牛毛,而本文的加密方式对于一个加密小白来讲真的痛苦,说什么导入文件,那是前端,python重写,报错刷屏,想把 js 文件函数一个个 copy 过来,又一直 xx not defined ,不过功夫不负有心人,终于找到了这种 rsa 的实现源码
直接复制,大功告成(后面有源码)
加密
这里还有一个小坑,execjs 调用函数返回结果需要转一下 str 类型,否则不会有返回结果
result = js_data.call('d', first_params,second_params,third_params,forth_params) # 调用函数js里面的函数
print(result['encText'],result['encSecKey'])
data = {
'params': str(result['encText']),
'encSecKey':str(result['encSecKey'])
}
到此为止,网易云评论就可以正常获取了!
评论.jpg