当前位置: 首页 > article >正文

web逆向企鹅音乐,下载歌手歌单音乐

声明:
该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关
下载资源链接:https://download.csdn.net/download/randy521520/90374039

一、找出需要加密的参数

1.js运行 atob(‘aHR0cHM6Ly95LnFxLmNvbS9uL3J5cXEvdG9wbGlzdC80’) 拿到网址,F12打开调试工具,搜索某个歌手歌单,找到/cgi-bin/musics.fcg请求(获取歌单),鼠标右击请求找到Copy>Copy as cUrl(cmd)
在这里插入图片描述
2.打开网站:https://spidertools.cn/#/curl2Request,把拷贝好的curl转成python代码
在这里插入图片描述
3.新建qq.py文件,把代码复制到该文件内,由于需要请求多个请求吧,所以把requests改为requests.sesseion,还需要把data参数utf-8转码,json.dumps时需要加上ensure_ascii=False参数防止非ASCII字符转换成Unicode
在这里插入图片描述
4.请求中的header并没有加密信息,而cookies中的字段基本是账号登录后的cookie不用管,其中请求中的params是加密字段,再发送一条请求对比打他中的参数会发现,data中的中的searchid是可变的,所以只需要解决params、searchid就行
在这里插入图片描述

二、分析searchid加密代码

1.network关键字搜索searchid,在searchid赋值的地方断点
在这里插入图片描述
2.重新发送请求,会进入该断点,鼠标悬浮到searchid加密函数,点击链接可以找到加密函数
在这里插入图片描述
3.新建webpack.js,把加密函数复到该文件,重复运行即可补全该加密函数,该环境比较简单就不演示过程了
在这里插入图片描述

三、分析params加密代码

1.network关键字搜索sign:,在sign:赋值的地方断点
在这里插入图片描述
2.重新发送请求,会进入其中一个断点,分析代码会发现sign是data加密生成,且加密的函数是n(350).default,该加密函数是webpack的特性;分析上面代码会发现_=Date.now()
在这里插入图片描述
3.根据分析补上_
在这里插入图片描述
4.鼠标悬浮到n上可以找到加载webpack得代码,把代码全部复制到webpack.js,分析代码得知主要函数为f
在这里插入图片描述
5.根据分析修改webpack.js
在这里插入图片描述
6.鼠标悬浮到n(350).default,找到加密函数得文件,把文件中得代码全部复制到webpack.js顶部,大概有两万多行得代码
在这里插入图片描述
7.删除之前得测试函数,写一个方法获取sign,调用函数后会发现sign获取成功,且长度是42,对比之前请求成功得sign会发现长度不一样,说明环境不对
在这里插入图片描述
8.环境比较简单就不演示了,只需要补上location、navigator就行,可以使用下面代码吐出环境

// 代理器封装
function getEnv(proxy_array) {for(var i=0; i<proxy_array.length; i++){handler = `{\nget: function(target, property, receiver) {\nconsole.log('方法:get','    对象:${proxy_array[i]}','    属性:',property,'    属性类型:',typeof property,'    属性值类型:',typeof target[property]);return target[property];},set: function(target, property, value, receiver){\nconsole.log('方法:set','    对象:${proxy_array[i]}','    属性:',property,'    属性类型:',typeof property,'    属性值类型:',typeof target[property]);return Reflect.set(...arguments);}}`;eval(`try{\n${proxy_array[i]};\n${proxy_array[i]} = new Proxy(${proxy_array[i]},${handler});}catch(e){\n${proxy_array[i]}={};\n${proxy_array[i]} = new Proxy(${proxy_array[i]},${handler});}   `)}
}// proxy_array = ['window', 'document', 'location', 'navigator', 'history','screen','target' ]
// getEnv(proxy_array)module.exports = getEnv

9.修改qq.py验证结果,会发现已经拿到歌单;这只是歌单,并没有拿到歌曲得url
在这里插入图片描述

四、分析歌曲url

1.点击一首歌进行播放,会进入播放列表页面,f12打开调试工具,刷新页面,network搜索.m4a请求,可以找到歌曲的url,复制url,另打开个窗口访问url会发现歌曲可以正常播放,说明就是此url,这边儿使用的是微信账号,如果是qq账号.m4a找不到,可以搜索.mp3
在这里插入图片描述
在这里插入图片描述
2.搜索C400002202B43Cq4V4.m4a?guid=,可以找到获取歌曲url的请求,这里会发现同样是/cgi-bin/musics.fcg请求
在这里插入图片描述
3.复制请求结果到工具格式化,搜索C400002202B43Cq4V4.m4a?guid=会发现在req_8中
在这里插入图片描述
4.使用工具分别对比这次的/cgi-bin/musics.fcg请求和歌单的/cgi-bin/musics.fcg请求的cookie、data参数,会发现cookie中的ts_last不同,data中的comm相同;虽然获取歌曲url中的请求除了comm还有很多参数,但是在之前分析请求结果是时请求url在req_8中,所以只需要关心req_8参数就行
在这里插入图片描述
在这里插入图片描述
5.修改qq.py,根据分析封装/cgi-bin/musics.fcg请求
在这里插入图片描述在这里插入图片描述
6.分析req_8参数,其中songmid是歌曲id,uni是之前请求中的comm参数uni
在这里插入图片描述
7.回到歌单页面搜索songmid,会发现是之前歌单请求结果中的mid
在这里插入图片描述
8.根据分析修改qq.py,获取歌曲url,至此获取某个歌单到歌曲url结束
在这里插入图片描述

五、下载歌曲

1.下载歌曲时需要歌手名称作为文件夹,所以需要在get_music_src中创建文件夹
在这里插入图片描述
2.写个down_music函数,下载歌曲
在这里插入图片描述在这里插入图片描述
3.测试是否可以下载歌曲
在这里插入图片描述

相关文章:

web逆向企鹅音乐,下载歌手歌单音乐

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 下载资源链接&#xff1a;https://download.csdn.net/download/randy521520/90374039 一、找出需要加密的参数 1.js运行 atob…...

stm32 lwip tcp服务端频繁接收连接失效问题解决(tcp_recved)

一、问题描述 最近用stmf429单片机作为TCP服务端遇到一个问题&#xff0c;就是客户端特别频繁的发送消息&#xff0c;过一段时间以后&#xff0c;客户端的请求不再被客户端接收到&#xff0c;而且服务器端监控的掉线回调函数也不会被调用&#xff0c;好像这个连接就凭空的消失…...

Python Pandas(7):Pandas 数据清洗

数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况&#xff0c;如果要使数据分析更加准确&#xff0c;就需要对这些没有用的数据进行处理。数据清洗与预处理的常见步骤&#xff1a; 缺失值处理&#xff1a;识别并…...

【重构谷粒商城】06:Maven快速入门教程

重构谷粒商城06——Maven快速入门教程 前言&#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具&#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中&#xff0c;帮助初级程序员快速进阶&#xff0c;以最快的速度&#xff0c;效率&#xff0c;快速进阶到…...

Elasticsearch:同义词在 RAG 中重要吗?

作者&#xff1a;来自 Elastic Jeffrey Rengifo 及 Toms Mura 探索 RAG 应用程序中 Elasticsearch 同义词的功能。 同义词允许我们使用具有相同含义的不同词语在文档中搜索&#xff0c;以确保用户无论使用什么确切的词语都能找到他们所寻找的内容。你可能会认为&#xff0c;由于…...

React 低代码项目:组件设计

React 低代码项目&#xff1a;组件设计 Date: February 6, 2025 React表单组件 **目标&#xff1a;**使用 Ant Design 表单组件&#xff0c;开发登录、注册、搜索功能 内容&#xff1a; 使用 React 表单组件、受控组件使用 Ant Design 表单组件使用 表单组件的校验和错误提…...

从0到1的回溯算法学习

回溯算法 前言这个算法能帮我们做啥算法模版力扣例题&#xff08; 以下所有题目代码都经过力扣认证 &#xff09;形式一 元素无重不可复选46.全排列思路详解代码 77.组合思路详解代码 78.子集思路详解代码 形式二 元素可重不可复选思考&#xff08;deepseek&#xff09;核心思想…...

24、深度学习-自学之路-卷积神经网络

一、你怎么理解卷积神经网络呢&#xff0c;我的理解是当你看一个东西的时候&#xff0c;你的眼睛距离图片越近&#xff0c;你看到的东西就越清晰&#xff0c;但是如果你看到的图片只是整个物体的一小部分&#xff0c;那么你将不知道你看到的物品是什么&#xff0c;因为关注整体…...

AVL树:高效平衡的二叉搜索树

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; 引言&#x1f914; 在数据结构的奇妙世界里&#xff0c;二叉搜索树&#xff08;BST&#xff09;原本是查找数据的好帮手。想象一下…...

RHCA练习5:配置mysql8.0使用PXC实现高可用

准备4台CentOS7的虚拟机&#xff08;CentOS7-1、CentOS7-2、CentOS7-3、CentOS7-4&#xff09; 备份原yum源的配置&#xff1a; mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 更换阿里云镜像YUM源&#xff1a; curl -o /etc/yum.repos.…...

若输入超过 5 位数个时,推荐使用 scanf 输入数据。

【知识点】 在 C 中&#xff0c;当需要处理超过 5 位数个输入时&#xff0c;推荐使用 scanf 而不是 cin 输入数据。 这是因为 scanf 通常比 cin 更快。 另外&#xff0c;若整数超过 10 位&#xff0c;选择用 long long 型&#xff0c;而不是 int 型。 【参考文献】 https://b…...

Java 大视界 -- 边缘计算与 Java 大数据协同发展的前景与挑战(85)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

Android 原生层SurfaceView截屏

背景&#xff1a;flutter嵌入原生view时&#xff0c;原生view使用的surfaveview&#xff0c;导致下面两种方法无法正常使用。 导致flutter无法通过id找到RenderRepaintBoundary的toImage来抓取widget&#xff0c;原生层无法通过view去获取Bitmap 方案&#xff1a;使用PixelCopy…...

机器学习 - 理论和定理

在机器学习中&#xff0c;有一些非常有名的理论或定理&#xff0c;对理解机器学习的内在特性非常有帮助。本文列出机器学习中常用的理论和定理&#xff0c;并举出对应的举例子加以深化理解&#xff0c;有些理论比较抽象&#xff0c;我们可以先记录下来&#xff0c;慢慢啃&#…...

2025.2.11——一、[极客大挑战 2019]PHP wakeup绕过|备份文件|代码审计

题目来源&#xff1a;BUUCTF [极客大挑战 2019]PHP 目录 一、打开靶机&#xff0c;整理信息 二、解题思路 step 1&#xff1a;目录扫描、爆破 step 2&#xff1a;代码审计 1.index.php 2.class.php 3.flag.php step 3&#xff1a;绕过__wakeup重置 ​编辑 三、小结…...

读取本地excel删除第一行,并生成List数组

在 pom.xml 里添加如下依赖&#xff1a; <dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.ap…...

Vivado生成edif网表及其使用

介绍如何在Vivado中将模块设为顶层&#xff0c;并生成相应的网表文件&#xff08;Verilog文件和edif文件&#xff09;&#xff0c;该过程适用于需要将一个模块作为顶层设计进行综合&#xff0c;并生成用于其他工程中的网表文件的情况。 例如要将fpga_top模块制作成网表给其它工…...

JAVA生产环境(IDEA)排查死锁

使用 IntelliJ IDEA 排查死锁 IntelliJ IDEA 提供了强大的工具来帮助开发者排查死锁问题。以下是具体的排查步骤&#xff1a; 1. 编写并运行代码 首先&#xff0c;我们编写一个可能导致死锁的示例代码&#xff1a; public class DeadlockExample {private static final Obj…...

Mac 下使用多版本 Node

一、导读 使用 n 实现 Mac 下 Nodejs 的多版本切换&#xff0c;需要先安装一个版本的 Node.js&#xff0c;然后使用 npm 安装 n&#xff0c;再通过 n 管理 node 的多版本切换。 二、使用 npm 全局安装 n sudo npm install -g n 三、根据需求安装指定版本的 node sudo -E n…...

AI学习记录 - 最简单的专家模型 MOE

代码 import torch import torch.nn as nn import torch.nn.functional as F from typing import Tupleclass BasicExpert(nn.Module):# 一个 Expert 可以是一个最简单的&#xff0c; linear 层即可# 也可以是 MLP 层# 也可以是 更复杂的 MLP 层&#xff08;active function 设…...

【2025深度学习系列专栏大纲:深入探索与实践深度学习】

第一部分:深度学习基础篇 第1章:深度学习概览 1.1 深度学习的历史背景与发展轨迹 1.2 深度学习与机器学习、传统人工智能的区别与联系 1.3 深度学习的核心组件与概念解析 神经网络基础 激活函数的作用与类型 损失函数与优化算法的选择 1.4 深度学习框架简介与选择建议 第2…...

DDD聚合在 ASP.NET Core中的实现

目录 工作单元&#xff08;UnitOfWork&#xff09;的实现 聚合与聚合根的实现 实现 聚合与DbContext的关系 区分聚合根实体和其他实体 跨表查询 实现实体不要面向数据库建模 工作单元&#xff08;UnitOfWork&#xff09;的实现 EFCore的DbContext&#xff1a;跟踪对象状…...

数据治理双证通关经验分享 | CDGA/CDGP备考全指南

历经1个月多的系统准备&#xff0c;本人于2024年顺利通过DAMA China的CDGA&#xff08;数据治理工程师&#xff09;和CDGP&#xff08;数据治理专家&#xff09;双认证。现将备考经验与资源体系化整理&#xff0c;助力从业者高效通关。 &#x1f31f; 认证价值与政策背景 根据…...

Aitken 逐次线性插值

Aitken 逐次线性插值 用 Lagrange 插值多项式 L n ( x ) L_n(x) Ln​(x)计算函数近似值时&#xff0c;如需增加插值节点&#xff0c;那么原来算出的数据均不能利用&#xff0c;必须重新计算。为克服这个缺点&#xff0c;可用逐次线性插值方法求得高次插值。 令 I i 1 , i 2…...

亚信安全正式接入DeepSeek

亚信安全致力于“数据驱动、AI原生”战略&#xff0c;早在2024年5月&#xff0c;推出了“信立方”安全大模型、安全MaaS平台和一系列安全智能体&#xff0c;为网络安全运营、网络安全检测提供AI技术能力。自2024年12月DeepSeek-V3发布以来&#xff0c;亚信安全人工智能实验室利…...

unet学习(初学者 自用)

代码解读 | 极简代码遥感语义分割&#xff0c;结合GDAL从零实现&#xff0c;以U-Net和建筑物提取为例 以上面链接中的代码为例&#xff0c;逐行解释。 训练 unet的train.py如下&#xff1a; import torch.nn as nn import torch import gdal import numpy as np from torch…...

HTML之JavaScript运算符

HTML之JavaScript运算符 1.算术运算符 - * / %除以0&#xff0c;结果为Infinity取余数&#xff0c;如果除数为0&#xff0c;结果为NaN NAN:Not A Number2.复合赋值运算符 - * / %/ 除以0&#xff0c;结果为Infinity% 如果除数为0&#xff0c;结果为NaN NaN:No…...

CCFCSP第34次认证第一题——矩阵重塑(其一)

第34次认证第一题——矩阵重塑&#xff08;其一&#xff09; 官网链接 时间限制&#xff1a; 1.0 秒 空间限制&#xff1a; 512 MiB 相关文件&#xff1a; 题目目录&#xff08;样例文件&#xff09; 题目背景 矩阵&#xff08;二维&#xff09;的重塑&#xff08;reshap…...

探索B-树系列

&#x1f308;前言&#x1f308; 本文将讲解B树系列&#xff0c;包含 B-树&#xff0c;B树&#xff0c;B*树&#xff0c;其中主要讲解B树底层原理&#xff0c;为什么用B树作为外查询的数据结构&#xff0c;以及B-树插入操作并用代码实现&#xff1b;介绍B树、B*树。 &#x1f4…...

【Copilot】Redis SCAN SSCAN

目录 SCAN 命令SSCAN 命令使用示例原理Redis SCAN 和 SSCAN 命令的注意事项及风险注意事项风险 以下内容均由Github Copilot生成。 SCAN 和 SSCAN 命令是 Redis 提供的用于增量迭代遍历键或集合元素的命令。它们的主要优点是可以避免一次性返回大量数据&#xff0c;从而减少对 …...