python爬虫:了解JS加密爬取网易云音乐

python爬虫:了解JS加密爬取网易云音乐

前言

大家好,我是“持之以恒_liu”,之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何。接下来,就讲一讲今天的正题了,运用python爬虫爬取网易云音乐,之前小编尝试了爬取QQ音乐、酷狗音乐、酷我音乐,但是觉得爬取网易云音乐是最难的一个。为什么这样讲呢?除了它是post请求之外,就是它的加密了。原本小编早就打算尝试爬取它了,但是苦于对浏览器断点操作一直不知怎么做,现在知道了,并且成功实现爬取网易云音乐。
小编在这里提醒读者一下, 文明爬虫

文明爬虫


即:1.不要在网址用户使用高的时段运行本程序,以免影响网址的正常运行;
2.本程序代码仅供学习,且莫用于商业活动,一经被相关人员发现,本小编概不负责!希望读者牢记!

1.了解网易云音乐的加密

小编通过多次尝试,个人觉得网易云音乐的加密原理是这样的。我们需要爬取的那个网址是post,而post请求需要请求参数,网易云音乐是先将请求参数进行加密,然后再发起请求(防止反爬),这样看起来的请求数据也就是读者看不懂的那一大串字符串。

在这里插入图片描述


既然它加密请求,我们也可以模拟加密操作呀!不过需要知道开始的请求参数和加密算法,如果这两样都知道,那么其实爬取这个网址也没有大家想象的那么难了。

在这里插入图片描述

2.找到发起请求的初始参数

那么怎样找到初始请求参数呢?小编以下举例
一开始搜索一首歌曲

在这里插入图片描述


可以发现这个是动态网址,直接根据这个网址根本无法得到这些歌曲名称和歌曲id哈!按电脑键盘的F12键或者鼠标点击右键,来到浏览器的开发者模式。

在这里插入图片描述


来到以上界面,可以发现这个网址为:https://music.163.com/weapi/cloudsearch/get/web?csrf_token= ,这个网址下面就是这些歌曲的名称和id,由于这是一个post请求,并且请求参数也是进行了加密,怎样获得初始请求参数呢?

在这里插入图片描述

在这里插入图片描述


我们可以进行如上操作,首先断点,然后刷新,查看Scope这个下面是否出现小编上面提到的那个网址。没有出现的话,一直点小编图上标的那个符号,直到出现那个网址为止。

在这里插入图片描述


可以发现,此时这张图片上有上面的那个网址,但是那个请求参数是加了密的,之后一直点Call Stack下面的内容,直到请求参数出现没有加密时为止,此时的请求参数就是开始没有进行加密的那个参数了(小编推测)。

在这里插入图片描述


我们把图上的小编标明的那两个加了密的参数发起请求一下,

在这里插入图片描述


可以得到请求数据了,现在开始请求的参数有了,具体为
{"hlpretag": "<span>", "hlposttag": "", "s": 歌曲名, "type": "1", "offset": "0",
"total": "true", "limit": "30", "csrf_token": ""}

3.了解加密算法

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggfsy.html