APP下载

Skr 如何用Python爬取中国新说唱热门歌曲?

消息来源:baojiabao.com 作者: 发布时间:2026-05-13

报价宝综合消息Skr 如何用Python爬取中国新说唱热门歌曲?

作者 | 初一

责编 | 郭芮

之前风靡朋友圈的“skr”流行语把中国新说唱这一节目带上了热议高峰,本文就来分析下,如何用Python爬取大受欢迎的说唱歌曲。

首先登录https://music.163.com/ 网易云音乐搜索新说唱,打开Chrome的开发工具工具选择Network并重新载入页面,找到与评论数据相关的请求即name为web?csrf_token=的POST请求,如下图所示:

查看该请求的headers我们发现formData包含了两个参数:params、encSecKey。显然这两个参数是经过JS加密的,这就是网易云反爬虫的一种策略。如下图:

我们再来看一下请求的Initiator有个core 2ab1b2b..js。因此我们需要分析一下这个JS,找出formData加密的规则即可。

将JS文件进行格式化,全局搜索params或者encSecKey:

params和encSecKey是从bSC8u这个对象中取的:

而这个对象是由windows.asrsea() 这个方法获得的,定位到该方法。如下图所示:

通过分析代码我们发现d函数才是最终的出口。分析d函数:

通过a(16)函数生成一个长度为16的随机字元串;

encText这个参数通过两次调用b(a,b) 函数完成,这个函数的作用为AES加密;

调用 c(i, e, f)得到encSecKey,这个函数的作用是进行RSA加密。

AES加密:AES(Advanced Encryption Standard)对称加密算法是一种高级数据加密标准,是美国联邦政府采用的一种区块加密标准,可有效抵制针对DES的攻击算法。特点是,密钥建立时间短、灵敏性好、内存需求低、安全性高。

RSA加密:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。

通过上面分析,除了 i 是一个随机字元串,我们只需要知道d、e、f、g这四个参数就可以构造请求进行后续操作了。接下来我们进行JS断点调试。

经过多次调试,我们发现e、f、g这三个值是不变的,唯一改变的是d。再结合上文分析,encSecKey由函数c(i, e, f)得到的,那是不是就意味着encSeckey这个值是不变的呢?

然而,经过代码测试并不是这样,要保证encSecKey和params中的随机字元串(也就是i的值)是一样的才可以。

首先我们先实现函数a,即生成16位的随机字元:

其次来实现加密参数的生成(说白了就是翻译JS代码为Python代码):

最后参数构造完毕,就可以开始咱们的爬虫了。

由于RSA是非对称加密,无法通过encSecKey解密出i,没有i也就无法解密params,所以也就只能对每个界面进行断点调试,观察请求的构造。

搜索歌曲的data为:

查询歌曲信息的data:

接下来就可以开始写爬虫了。分析网页请求我们发现搜索歌曲的时候响应是在https://music.163.com/weapi/cloudsearch/get/web?csrf_token= 这个请求里响应的:

歌词信息由 https://music.163.com/weapi/song/lyric?csrf_token=这个请求响应的:

万事俱备,开始Coding!

运行之后查看数据库:

现在我们有了Rap歌手的id,从全网爬他们的说唱歌曲还不是so easy?

作者:初一,曾在知名互联网公司担任java研发一职,项目带头人。18年中旬转行Python,热爱爬虫喜欢折腾新东西。coding与乐趣同在。Talk is cheap,Show me the code.

声明:本文为作者投稿,版权归其个人所有。

苹果手机的微信改版了,

想快速看到CSDN的热乎文章,

赶快把CSDN公众号设为星标吧,

打开公众号,点击“设为星标”就可以啦!

安卓手机的用户,

点击公众号右上角小人,就可以置顶啦。

2018 AI开发者大会

只讲技术,拒绝空谈

2018 AI开发者大会首轮重磅嘉宾及深度议题现已火热出炉,扫码抢“鲜”看。国庆特惠,购票立享5折优惠!





2018-10-03 20:39:00

相关文章