网易云音乐评论和歌词爬取

一、简介

        小白一枚,如有不足,敬请斧正。

        本文内容是关于网易云音乐的评论有和歌词的JS逆向爬虫爬取。

二、环境

        python3.6.5  nodejs 

三、 具体内容(分析评论,歌词的步骤一模一样)  

        3.1 接口分析

                从抓包工具之中,我们不难找到评论所在的包,如下图:

                        

                 其中,getxxx是评论,lyric是歌词,这里之分析评论。

        3.2参数分析

                点开评论的数据包后,我们可以发现他有俩个post请求的参数:

                 

               

        3.3 加密分析 

                然后我们对这俩个参数进行搜索:

                                

                不难找到这个俩个参数的位置,这俩个参数是通过bUE3x对象获得的,于是我们找到这个对象

                         

                显然,这是个加密函数,通过asrsea函数进行了加密,然后返回加密值,把这个加密值post请求对于的评论。经过多次测试之后,我发现后面三个参数是写死的,我们只需要管第一个参数。(后面三个参数传入的其实是这个js文件最上面对应的一个数组,每一个emojy对于一个值,然后加密,有兴趣的也可以试试看看他的整个加密过程)。

                然后我们看第一个参数,调试中,当这个请求刚好发出的时候,对应的参数如下图:

                         

         我们不难发现,这个r_so_4 后面加的其实是这首歌的id,通过测试也证实了这个猜想。

        四个参数都确定之后,下面就是对于加密函数的处理了,就是去找到那个asrsea,然后缺啥补啥,得到一个js文件,最后把那个变动的第一个参数传进去调用即可。

       3.4 翻页

        翻页就是改变加密参数中的cursor进行翻页,而这个cursor是通过前一个包的结果获取的,这里比较坑,不是常规的pageno。我们也可以取巧,因为这个pagesize其实可以改的,默认是20,通过测试1000也可以,不过比这个还大的话就直接被反爬了。

        

self.info = {  # 爬取评论加密的第一个参数
            'rid': 'R_SO_4_{}'.format(self.id),
            'threadId': 'R_SO_4_{}'.format(self.id),
            'pageNo': '1',
            'pageSize': self.maxPage, # 一次评论数 ,测试最大为1000
            'cursor': '-1',
            'offset': '0',
            'orderType': '1',
            'csrf_token': ''
        }

        至此,评论爬取就完成了,至于歌词也是一样的,只不过第一个参数变了。他会发四五个包,都是通过上面的asrsea函数进行加密得到post过去的参数。

四、运行结果

        

github源码

https://github.com/L2421800049/netEasyMusicComment.git

        

        

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值