网易云音乐JS逆向分析

文章目录

      • 页面分析
      • 抓包分析
      • JS逆向分析
      • 代码编写

页面分析

先来分析一下页面
在这里插入图片描述

当我们点击播放按钮的时候,音乐开始播放。实际上这个逻辑背后的原理是这个按钮后面对应的是一个url,这个地址是通过ajax来进行局部刷新的。

所以我们可以通过抓包工具,来看看点点击播放按钮的时候到底发送了哪些网络请求。我们逐个去分析这些请求,就可以从这些请求中拿到我们想要的数据了。

那么我们想要下载这个音乐其实只需要三步:

  1. 分析网络请求,找到音乐下载地址
  2. 分析url请求的参数,获取来源
  3. 编写代码,下载音乐

抓包分析

在这里插入图片描述

点击播放,这里产生了一堆数据表,这里我们需要逐个去分析。
在这里插入图片描述

找到这个请求,返回的数据里面有一个url

http://m701.music.126.net/20240105104834/ad9643baf3be3fea26ec3af8fe02b556/jdyyaac/obj/w5rDlsOJwrLDjj7CmsOj/32048585194/3ae6/9029/4439/a1ee98567f8ef9469319a85700a24486.m4a

直接把这个url放到浏览器里

在这里插入图片描述

发现就是这个音乐本身,那么这个url就是我们要的音频的下载地址。

JS逆向分析

接着我们来分析这个请求
在这里插入图片描述

首先URL是这一个

https://music.163.com/weapi/song/enhance/player/url/v1?csrf_token=

直接构造就可以了,那么怎么知道下载的是哪一首歌曲呢,这个体现在参数里
在这里插入图片描述

这里一共提交了两个参数,params和encSecKey,那么这两个参数从哪来的就是我们要进行分析的。
在这里插入图片描述

我们点开Initiator,随便选一个调用堆栈往上跟
在这里插入图片描述

这里gA4E.data是我们要追踪的加密字段
在这里插入图片描述

而这个值来源于当前的参数,所以我们要继续往上找调用堆栈
在这里插入图片描述

找到上一层,发现还是来源于参数
在这里插入图片描述

一直往上回溯,直到找到这个位置,这里就是他的加密逻辑

var bVi9Z = window.asrsea(JSON.stringify(i3x), bsu5z(["流泪", "强"]), bsu5z(Xo5t.md), bsu5z(["爱心", "女孩", "惊恐", "大笑"]));e3x.data = j3x.cr3x({params: bVi9Z.encText,encSecKey: bVi9Z.encSecKey})

params字段和encSecKey字段均来源于bVi9Z,那么关键就在于分析出asrsea函数和他的几个参数

函数代码如下:

 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,b,c函数,我们顺便把其他的函数一起拿下来

!function() {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}function e(a, b, d, e) {var f = {};return f.encText = c(a + e, b, d),f}window.asrsea = d,window.ecnonasr = e
}();

这是第一波扣的代码。

在这里插入图片描述

第二波,把Crypto加密库扣下来
在这里插入图片描述

第三波,把全局函数扣下来

在这里插入图片描述

然后就拿到运行结果了,
在这里插入图片描述

也可以通过补全第三方库的方式,来解决这个问题。

接下来需要搞定加密函数的参数

var bVi9Z = window.asrsea(JSON.stringify(i3x), bsu5z(["流泪", "强"]), bsu5z(Xo5t.md), bsu5z(["爱心", "女孩", "惊恐", "大笑"]));

这四个参数都是固定的

在这里插入图片描述

我们可以直接把结果拿下来,放到函数里面。

如果你想要其他的数据,比如评论,获取评论的接口也是用的这两个参数,只不过传入的参数不一样,那就得去扣bsu5z函数,我这里是扣不动了。

代码编写

在这里插入图片描述

最后 写代码发请求,然后把音乐内容下载保存即可。

在这里插入图片描述

另外,评论的接口,也是用的这两个参数,需要扣,只不过传入的加密参数不一样,各位有兴趣可以自行分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/642984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件开发:大厂中的灰度发布到底是什么样的一个流程

前言 灰度发布是一种软件发布的策略,也被称为渐进式发布或部分用户发布。在灰度发布中,新版本的软件不会立即对所有用户进行全面发布,而是先选择一小部分用户进行测试和试用。这样可以在生产环境中逐步引入新功能或修复bug,以降低…

K8S搭建(centos)四、安装K8S

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

linux环境开发工具---yum与vim

1.Linux软件包管理器yum 1.1什么是软件包 在学习linux过程中,我们常常会遇到某些指令用不了的时候,原因除了权限问题外,还有可能是你当前的linux环境并没有安装相应的软件包。而在Linux下载安装软件的办法有两个,一个是先下载所需…

Aspx漏洞总结

第一部分,.NET项目当中的dll都可以进行反编译: 在java中有很多jar包,而在.NET框架中的bin中对应有很多DLL文件,bin下面都是可执行文件,这些文件都是很多代码封装的,想要查看源码,都需要通过反编…

Microsoft Remote Desktop for Mac(远程桌面连接)激活版

Microsoft Remote Desktop是一款由微软开发的远程桌面连接工具,它允许用户从另一台计算机或移动设备远程连接到Windows桌面或服务器。 以下是该软件的一些主要特点和功能: 跨平台支持:Microsoft Remote Desktop支持Windows、macOS、iOS和Andr…

【Linux】Vagrant搭建Linux环境

1. Vagrant Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。 1.1 安装Vagrant 从Vagrant官网下载安装包,执行安装。 1.2 安装VirtualBox 从官网下载…

【K8S 云原生】K8S之HPA自动扩缩容、命名空间资源限制、容器抓包

目录 一、HPA概述 1、概念 2、两个重要的组件: 3、HPA的规则: 4、pod的副本数扩容有两种方式: 4.1、手动扩缩容,修改副本数: 4.2、自动扩缩容HPA 二、实验部署: 1、部署HPA 2、实现自动扩缩容 三…

智慧博物馆信息化系统建设(2)

物联网智能感知综合平台 物联网感知综合平台是综合物联网应用共性特点,贯穿感知、传输、应用服务三层的共性功能模块、协议和平台等的总称。 “感知综合平台基础标准+应用子集标准”体系已被ISO/IEC JTC1 国际标准化组织和国家物联网基础工作组认可,“物联网感知综合平台+应…

Pandas--简介(1)

Pandas 简介 Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。Pandas 是数据科学和…

GPTBots:利用FlowBot中的卡片和表单信息,提供丰富的客服体验

在当今的数字化时代,客户服务的形式和体验正在经历着前所未有的变革。传统的文字消息方式已经无法满足现代用户对于服务体验的多元化需求。那么,如何才能在这个信息爆炸的时代,让我们的服务方式更加个性化、多样化,从而提供更丰富…

博途1200PLC脉冲轴绝对定位往复运动控制FB(完整SCL源代码)

三菱PLC绝对定位指令往复运动控制请参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/135570157https://rxxw-control.blog.csdn.net/article/details/135570157SMART PLC绝对定位往复运动控制 https://rxxw-control.blog.csdn.net/article/details/1…

VBA经典应用69例:基于文本条件的一般筛选及条件OR筛选

《VBA经典应用69例》(版权10178981),是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便…

JAVA工程中引用本地jar的3种常用方式,你用过哪种?

文章目录 前言1. 第1种方式2. 第2种方式3. 第3种方式 前言 实际项目过程中咱们经常会碰到需要本地引用jar包到java工程中的场景,本文就介绍一下遇到此场景时如何在IDEA中导入本地jar包到工程中的3种方式,简单却很常用。 1. 第1种方式 IDEA -> File …

Linux中NFS服务器的搭建和安装

1.介绍: 网络文件系统即将本地系统放在网络上某一个位置的系统,基于UDP/IP使用nfs能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上其他计算机中的文件就像在访问自己的计算机一样,也就是说放在一个开发板上&#…

Mysql的骚操作说明

Mysql的常规操作 记录些不常用,但是很实用的操作,旨在在MySQL语言能解决的批量操作的问题,不动用其他动态或静态语言的辅助。 1、FROM_UNIXTIME 时间戳转时间格式 select scode,sid,gender,type,FROM_UNIXTIME(report_time) as report_time,FROM_UNIXTIME(add_time) as add…

[windows]win11任务管理器性能中N卡GPU看不到cuda进程Copy选项找不到cuda选项

正常情况下Copy里面有cuda选项,如图 对于不懂技术的人来说,有个误区,就是上图没有显示cuda选项就一定是cuda不能用吗?显然不是,这个选项只是方便在资源管理器展示cuda使用情况。如果在windows11你设置了一些东西则可能…

短视频矩阵系统软件源头开发+无人直播源头开发

首先:我了解您想要开发短视频矩阵系统和无人直播系统的需求。我们是一手源头自研开发,我们采用的是php7.40升级版开发模式 这些系统对于许多企业和个人来说都非常重要,因为它们可以帮助他们更好地管理他们的内容制作和营销活动。 开发这样的…

VUE---插槽

一、插槽的作用&场景 1、在封装组件的时候&#xff0c;将可变的结构设计为插槽&#xff08;<slot></slot>&#xff09; 2、使用上述组件的时候&#xff0c;可以按需为插槽提供自定义的结构&#xff0c;以达到复用组件且高度自定的效果 二、基本语法 1、组件内…

帝国cms使用手机号单篇付费下载的关键代码实现以及代码引用

#小李子9479# #帝国cms# 1。从服务器下载文件php代码 2。前端集成 a)需要一个下载的链接&#xff0c;只要包含button_down这个class即可&#xff0c;即可以为<div class"button_down" data-classid"[!--classid--]" data-infoid"[!--id--]"…

【DeepLearning-1】 注意力机制(Attention Mechanism)

1.1注意力机制的基本原理&#xff1a; 计算注意力权重&#xff1a; 注意力权重是通过计算输入数据中各个部分之间的相关性来得到的。这些权重表示在给定上下文下&#xff0c;数据的某个部分相对于其他部分的重要性。 加权求和&#xff1a; 使用这些注意力权重对输入数据进行加权…