网易云设置密码(js解密剖析—爬虫之网易云音乐加密破解)

首页教程更新时间:2023-06-06 17:55:37

js破解网易云音乐历程

前言

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(1)

网络爬虫的大障碍,就是各种加密。这其中包过登录的验证码以及加密。js混淆、js参数加密等等。其实以前也就了解过js加密。但是没有深入研究,借着这次实践研究了一下网易云音乐的加密方式。

博主通过网易云音乐评论加密的实例来做个学习过程的分析和分享。

如果有问题或者不懂的地方可以关注我的微信公众号(bigsai),联系我。

技能点
  • 前端:js知识(比较重要)、谷歌浏览器debug、抓包、打断点调试能力(必须)。以及js各种加密函数(了解).
  • python:基础的请求requests。Crypto.Cipher加密解密模块。
  • 其他:postman(模拟请求使用),良好的思维能力和分析能力。(加密算法有些乱),还有一点就是js加密转python的代码实现。
界面概况

静态网页

对于一般的url随着页面的变化而变化的页面,网易云还是有的,你只需要抓取网页进行分析即可。

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(2)

动态网页

但随着前后端分离的流行,以及数据分离好处明显。越来越多的数据采用ajax渲染。而网易云的评论即使如此。

在前后端分离刚火,那时很多网站对借口并没有太大的防护措施。就使得很多网站轻松获取结果。至今也有很多这样的借口存在,这种网站爬去就是傻瓜式爬取。

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(3)

然而随着前段技术的发展,接口也变的越来越棘手。就拿网易云的评论来说:它的参数就让人很懵逼。

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(4)

这一串串数字到底是啥。很多人见到这样的数据就会选择放弃。那么让我为你解开它什么的面纱。

页面解析

step1: 找参数

你可以看的到,它的参数有两个,一个是params,一个是encSecKey并且都是经过加密的,我们就要分析它的源头。F12打开source搜索encSckey.

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(5)

在查找这个js内部的encSecKey,发现原来在这里,经过断点调试发现这里就是最终参数的结果。

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(6)

step2:分析js函数

这个js有4w多行,如何能在4w多行js中找到有用的信息,然后理清楚这里的思路呢?

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(7)

这就需要你的抽象和逆向思维了。来,咱么开始分析。

var bYc7V = window.asrsea(JSON.stringify(i3x), bkY2x(["流泪", "强"]), bkY2x(VM8E.md), bkY2x(["爱心", "女孩", "惊恐", "大笑"])); e3x.data = k4o.cz4D({ params: bYc7V.encText, encSecKey: bYc7V.encSecKey })

上面这段代码中就是来源,我们先不管这个JSON.stringify(i3x)这些参数是啥,先搞清楚window.asrsea是什么。在上面不远处你会发现:

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(8)

这个就是d函数才是所有数据,方法的根源,d、e、f、g四个参数就是我们刚刚说的不要管的参数。

从这个函数就是分析:encText是经过两次b()函数,encSecKey是经过c()函数,执行的一个参数。注意其中i参数来源是a(16).网上看看这些函数。

function a(a) { var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", c = ""; for (d = 0; a > d; d = 1) e = Math.random() * b.length, e = Math.floor(e), c = b.charAt(e); return c } function b(a, b) { var c = CryptoJS.enc.Utf8.parse(b) , d = CryptoJS.enc.Utf8.parse("0102030405060708") , e = CryptoJS.enc.Utf8.parse(a) , f = CryptoJS.AES.encrypt(e, c, { iv: d, mode: CryptoJS.mode.CBC }); return f.toString() } function c(a, b, c) { var d, e; return setMaxDigits(131), d = new RSAKeyPair(b,"",c), e = encryptedString(d, a) } function d(d, e, f, g) { var h = {} , i = a(16); return h.encText = b(d, g), h.encText = b(h.encText, i), h.encSecKey = c(i, e, f), h }

可以发现a(16)就是一个随机生成的数,所以我们不需要管他。而b目前来看是AES的cbc模式加密。那么这个encText生成的规则我们就很清楚了。两次AES的cbc加密。其中偏移量为0102030405060708固定不变。两次的key不同。而函数c就是三个参数进行RSA加密。整个算法大体流程差不多稍微了解。

到这里先停一下,不要在分析函数了,我们在分析分析数据。

step3:分析参数

再回到var bYc7V = window.asrsea(JSON.stringify(i3x), bkY2x(["流泪", "强"]), bkY2x(VM8E.md), bkY2x(["爱心", "女孩", "惊恐", "大笑"]))这个函数。凭直觉能够感觉得到有些数据一定跟我们的核心参数无关,最多跟时间戳有关。

查找bky2x源头,

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(9)

再找的话其实没必要,这类函数你找找。可以复制到vscode溯源找到根源。分析,在这里就不繁琐介绍。直接打断点分析吧!看看他是怎么执行的。

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(10)

其实多次抓你会发现后三个参数是固定不变的(非交互型数据)。

然而最想要的是第一个参数

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(11)

你心心念念的参数原来长这个样,那么和预想差不多,仅仅第一个参数和我们的参数有关。offset就是页面*20,R_SO_4_ songid就是当前这首歌的id.其实到这个时候,你的i和encSecKey可以一起保存了。因为上面分析说过,这个i是随机生成,而encSecKey也和我们核心参数无关,但是和i相关,所以要记录一组。用作ESA加密的参数和post请求的参数。

现在的你是不是很激动,因为真想即将浮出水面。

step4: 校验

这步骤也是很重要的一环,因为你在它的js中会发现。

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(12)

网易是否会动手脚呢?下载原始的js进行测试。发现哈哈,结果一致。那么就不需要更改再仔细查看那段加密算法的代码了。

架构图为

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(13)

step5:转为python代码

需要将AES的cbc模式的代码用Python克隆。达到加密的效果,测试一下。发现结果一致nice

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(14)

编写爬虫

下面就开始编写爬虫。先用postman测试需要那些参数。

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(15)

没问题,编写爬虫。根据你喜欢的哥。把id输进去,生成你爱的词云!一首光辉岁月送给大家!

网易云设置密码,js解密剖析—爬虫之网易云音乐加密破解(16)

源码github地址求Star。

如果有疑问或者过期可以关注我公众号联系我。

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
黔西旅游
黔西旅游
下载
闪耀的冒险者们
闪耀的冒险者们
下载
未名天日语网校
未名天日语网校
下载
山特绿色食品
山特绿色食品
下载
小鳄鱼爱洗澡
小鳄鱼爱洗澡
下载
指芯智家app
指芯智家app
下载
普安微超
普安微超
下载
金小哥
金小哥
下载
贵州民族工艺品商城
贵州民族工艺品商城
下载
叶罗丽娃娃店电脑版
叶罗丽娃娃店电脑版
下载
eXeemLite多语言版0.23Beta1
eXeemLite多语言版0.23Beta1
下载
天魔斗士
天魔斗士
下载
小猫斗鱼
小猫斗鱼
下载
51助手app
51助手app
下载
暴战机甲兵行星难度分布修改mod
暴战机甲兵行星难度分布修改mod
下载
有氧计步器
有氧计步器
下载