网上有现成的例子我就扒过来了!!
title: 网易云评论api分析
date: 2018-12-24 20:54:46
tags: [python]
网易云音乐是个好地方,里面各个都是人才,特别是评论区……
所以我就想把评论爬下来看看,下面记录一下分析api的过程与结果。
过程大概如下:
定位到获取评论的请求
分析评论请求方式
用python获取评论
定位评论请求
废话少说,F12,在网页中随便找一首歌,url形如: https://music.163.com/#/song?id=28828076,抓包。
待页面加载完成之后,随便找条评论搜索,定位到获取评论的那条请求,如下图:
可以看到这条请求是发向https://music.163.com/weapi/v1/resource/comments/R_SO_4_28828076?csrf_token=的,而其中的R_SO_4_后面其实就是歌曲的id。
分析请求
请求中发送的数据如下图,看一眼,啥都看不懂,肯定是加密过了。
从表单中的名称猜测出一个是加密后的内容,另一个是加密密钥。
下面要找到在哪里加密的信息,然后进一步找到加密方法,这样我们就可以用爬虫来模拟了。
在哪加密
同样,在network tab下面搜索encSecKey,搜到了一个js文件中的两个函数都有encSecKey。
下面列出这两个函数:
函数一
函数二
函数二调用了window.asrsea,而window.asrsea又在函数一中被赋值为d。
加密参数
在window.asrsea的参数表中,发现有两个硬编码的列表经过某个函数转换后传入到window.asrsea,也就是传入到d中,在d打下断点,发现经过转换后的传入到d中的参数如下:
现在两个常数e,g都已经确定了,经过多次断点,发现f竟然也是常数。
那么现在传入加密函数d中的所有参数都已经确定了,接下来要分析出来怎么用这些参数加密数据,然后发送到服务器。
加密策略
加密策略是使用AES加密请求数据,然后用RSA加密AES密钥,我尝试分析了一下,发现分析得头皮发麻,后面在github找到了。。。。。链接在这:网易云新版webapi分析
代码
代码是python2写的,改了一下,python3能用:
经过测试Cookies中只有带有_ntes_nuid就行了。
headers:
参考资料