网易云音乐评论爬虫-js参数加密

Posted tuchuss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网易云音乐评论爬虫-js参数加密相关的知识,希望对你有一定的参考价值。

目标:生成网易云音乐评论请求中 params 和 encSecKey 两个参数
(难度中等,更多的是熟练工具使用)
技术图片

第一步:找到加密参数位置,直接 ctrl+F 搜 encSecKey ,找到参数生成位置

技术图片

可以发现两个参数是通过 windows.aersea 这个函数加密的,它传入了四个参数,找到 windows.aersea 的定义,如下
技术图片
继续找函数 d
技术图片

这就是加密的函数 ,一共调用了 a,b,c,d 四个函数(a,b,c就在上面)

第二步:构造四个参数

函数 d 一共有四个参数,打个断点看一下都是什么

技术图片
技术图片

这里有个大坑,不知道为什么输出的四个参数都是常量,显然有问题,因为这两个参数控制翻页,但是并没有看到相关变量(现在我也不知道问题出在哪,真心求教)

一种办法不行,就换另一种,Fiddler抓包

首先把加密文件保存下来,打开,alert 一下我们要查看的变量
技术图片
然后把 fiddler 里的文件替换为修改过后的文件,记得点 save
技术图片

重新刷新网页
这回发现参数有了变化
技术图片
技术图片

技术图片

技术图片

第一个参数就是变量, rid 为歌曲 id ,offset 很常见了,控制翻页的

第三步:分析加密函数

简单分析一下四个函数

a 函数是生成长度 16 的随机字符串,很好理解
技术图片

b函数是 AES 加密,一共两次
技术图片
技术图片
c函数是 rsa 加密

第四步:函数实现

可以选择 python 重构(如果你喜欢的话),也可以用 js 库执行函数,这里用第二种方法(因为第一种试过坑多,实力不允许我这样做)

我电脑里装了 node ,所以会先用它调试,注意一下(直接用 execjs 这些也可以)

a 函数很简单,直接复制运行就可以,b函数aes加密直接复制运行就可以, node 环境需要下载个包导入,也很简单
技术图片

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‘])
    }

到此为止,网易云评论就可以正常获取了!
技术图片

源码链接:https://github.com/tuchuss/web_spider/blob/master/wyy




















以上是关于网易云音乐评论爬虫-js参数加密的主要内容,如果未能解决你的问题,请参考以下文章

简单的网易云音乐热门评论爬虫

爬取网易云音乐评论并使用词云展示

抓取网易云音乐歌曲热门评论生成词云

网易云音乐怎么看别人的评论,特定某个人的,想知道喜欢的人在想啥。

使用爬虫抓取网易云音乐热门评论生成好玩的词云

python爬虫实例--网易云音乐排行榜爬虫