美文网首页惠大人工智能
网易云音乐评论爬虫—js参数加密

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

作者: 58d512a2268b | 来源:发表于2019-05-24 09:05 被阅读184次

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


    参数.jpg

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

    面板查找.jpg

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


    asrsea.jpg

    继续找函数 d


    func d.jpg

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

    第二步:构造四个参数

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

    断点.jpg
    4个参数.jpg

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

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

    首先把加密文件保存下来,打开,alert 一下我们要查看的变量


    修改.jpg

    然后把 fiddler 里的文件替换为修改过后的文件,记得点 save


    fiddler.jpg

    重新刷新网页
    这回发现参数有了变化


    第一个参数.jpg
    参数2.jpg 参数3.jpg 参数4.jpg

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

    第三步:分析加密函数

    简单分析一下四个函数

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

    function a.jpg

    b函数是 AES 加密,一共两次

    第一次AES加密结果.jpg
    第二次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

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

    相关文章

      网友评论

        本文标题:网易云音乐评论爬虫—js参数加密

        本文链接:https://www.haomeiwen.com/subject/fxdwzqtx.html