码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2020-06-04 19:24:14      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:imageview   ogr   工具   ext   win   exec   真心   随机   数加   

目标:生成网易云音乐评论请求中 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参数加密

标签:imageview   ogr   工具   ext   win   exec   真心   随机   数加   

原文地址:https://www.cnblogs.com/tuchuss/p/13045433.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!