某易云音乐JS逆向案例

2023-10-29

某易云音乐参数破解

目标:aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvc2VhcmNoL20vP3M9JUU2JTg4JTkwJUU5JTgzJUJEJnR5cGU9MQ==
某易云音乐是大家喜爱的音乐平台,有小伙伴问我,这个网站的歌曲能不能找到音频链接,今天就给大家手撕一下,通过歌曲名提取搜索结果的音频链接。

1.JS调试

搜索歌曲,抓包,发现参数是加密的
在这里插入图片描述
播放音乐的时候也是这两个参数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ed61UWyJ-1676169630349)(.网易云参数破解_images/79f3f270.png)]

全局搜索关键字encSecKey
定位参数加密位置

打断点,重新搜索
输入文字,会断住,这个网址是不对的

放开,点击搜索,这个也不对

重复操作直到出现下列地址
在这里插入图片描述

检查现在的参数
在这里插入图片描述
只有歌曲名是可变的,其他的均为写死的参数,我们只需要在传参的时候将这个参数组装一下即可

2.js抠代码

根据之前的分析,直接构造一个函数

function _search(keyword) {
    var d='{"hlpretag":"<span class=\\"s-fc7\\">","hlposttag":"</span>","s":"'+keyword+'","type":"1","offset":"0","total":"true","limit":"30","csrf_token":""}';
    var e='010001';
    var f='00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7';
    var g='0CoJUm6Qyw8W8jud';
    var h = {}
        , i = a(16);
    return h.encText = b(d, g),
        h.encText = b(h.encText, i),
        h.encSecKey = c(i, e, f),
        h
}

接下来缺啥补啥,一直补就可以了
播放链接只要找到下列这个就ok啦
在这里插入图片描述

播放的加密函数

function _play(id) {
    var d='{"ids":"['+id+']","level":"standard","encodeType":"aac","csrf_token":""}';
    var e='010001';
    var f='00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7';
    var g='0CoJUm6Qyw8W8jud';
    var h = {}
        , i = a(16);
    return h.encText = b(d, g), 
        h.encText = b(h.encText, i),
        h.encSecKey = c(i, e, f),
        h
}

python调用

import requests
import execjs

def search_music(keyword):
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
    }
    url = "天王盖地虎"
    params = {
        "csrf_token": ""
    }
    ddd=execjs.compile(open('wangyiyun.js',encoding='utf-8').read()).call('_search',keyword)
    data = {
        "params": ddd['encText'],
        "encSecKey": ddd['encSecKey']
    }
    res = requests.post(url, headers=headers, params=params, data=data)
    music_list=res.json()['result']['songs']
    # print(res.json())

    for music in music_list:
        name=music['name']
        author=music['ar'][0]['name']
        id=music['id']
        url=get_url(id)
        print(name,author,url)

def get_url(id):
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
    }
    url = "宝塔镇河妖"
    params = {
        "csrf_token": ""
    }
    ddd = execjs.compile(open('wangyiyun.js', encoding='utf-8').read()).call('_play', id)
    data = {
        "params": ddd['encText'],
        "encSecKey": ddd['encSecKey']
    }
    res = requests.post(url, headers=headers, params=params, data=data)
    return res.json()['data'][0]['url']

if __name__ == '__main__':
    search_music('青花瓷')
data)
    return res.json()['data'][0]['url']

if __name__ == '__main__':
    keyword=input('请输入歌曲名:')
    search_music(keyword)

运行,搞定收工!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

某易云音乐JS逆向案例 的相关文章

  • 使用 python 只读取 Excel 中的可见行

    我想只读取 python 中 Excel 工作表中的可见行 输入 Excel表 所以当我过滤时 作为 python 中的输出 在本例中我将仅获得可见数据 1 行 这是我的代码 from openpyxl import load workbo
  • AngularJS Youtube 播放器嵌入非常大的播放列表

    我目前正在构建一个 AngularJS 应用程序 我知道它有点过时 但我对它很有信心 我的应用程序需要嵌入一个 YouTube 播放器 其中包含一个非常大的播放列表 大约 1500 个项目 但我无法对其进行编码 以便它实际上可以嵌入超过 2
  • 在 JavaScript/ActionScript 中重新定义 Math.constructor 有任何实际用途吗?

    Math 对象没有原型属性 但有构造函数属性 在任何情况下重新定义构造函数会有用吗 The Math对象 准确地说 由初始值引用的对象MathECMAScript 全局对象的属性 not have a constructor属性 请参阅EC
  • Discord.js v12:如何等待 DM 通道中的消息?

    这是我尝试过的代码 message author dmChannel awaitMessages msg gt console log msg content 但它返回此错误消息 TypeError Cannot read property
  • 如何使用 JavaScript 禁用滚动条?

    当我仅在 Internet Explorer 7 中显示代表模式窗口的 div 时 我需要锁定浏览器滚动条 谷歌搜索我发现我可以使用document body style overflow hidden 但这不适用于 IE7 我也尝试过do
  • 为什么 "asdf".replace(/.*/g, "x") == "xx" ?

    我偶然发现了一个令人惊讶的 对我来说 事实 console log asdf replace g x Why two替代品 似乎任何没有换行符的非空字符串都会产生此模式的两个替换 使用替换函数 我可以看到第一个替换是整个字符串 第二个替换是
  • 变量值的 swap() 函数[重复]

    这个问题在这里已经有答案了 我无法达到下面这个交换函数的预期结果 我希望将值打印为 3 2 function swap x y var t x x y y t console log swap 2 3 任何线索将不胜感激 您的函数正在内部交
  • 如何加速 pandas 字符串函数?

    我正在使用 pandas 矢量化 str split 方法来提取从 上的拆分 返回的第一个元素 我还尝试使用 df apply 与 lambda 和 str split 来产生等效的结果 使用 timeit 时 我发现 df apply 的
  • 如何可视化多维数据上的 kmeans 聚类

    我在 mnist 数据集上使用 kmeans 聚类算法 并希望可视化聚类后的图 到目前为止我做了这个 from mnist import MNIST mndata MNIST Datasets X train y train mndata
  • QUnit 与固定装置的奇怪行为,测试交替失败和通过

    我在 QUnit 中进行了以下设置 Dozen or so previous tests here test Test some markup generation function qunit fixture plugin jQuery
  • 如何将 fields 参数传递到 Google Drive Python API 调用中

    I have results drive service files list body execute where body q query string maxResults 1 为了提高性能 我想限制返回的字段 如下所述 https
  • “WebSocket 在连接建立之前已关闭”是什么意思?

    我正在使用 JavaScript 和联盟平台 http www unionplatform com我该如何诊断这个问题 非常感谢 如果你去http jsbin com ekusep 6 edit http jsbin com ekusep
  • Electron Auth0Lock“原始文件://不允许”

    尝试让 auth0 与我的电子应用程序一起使用 当我按照默认教程并尝试使用用户名 密码 身份验证进行身份验证时 锁定失败并显示 403 错误 并响应 不允许使用 Origin file 我还在 auth0 仪表板中客户端设置的允许来源 CO
  • 使用js获取选择选项的onclick事件

    我有一个非常令人沮丧的问题 我有这个代码 它过滤掉我的结果并将它们输入到选择框中 var syn
  • 从另一台服务器读取 Node.js 中的大文件

    我有两台相互通信的服务器 Server1 向 Server2 请求文件的部分内容 并将收到的数据存储到一个文件中 Server2 应该接收每个请求并创建一个流管道传输数据 假设服务器2中存储的文件 目录 如下 bigfile gz bigf
  • (A == B == C) 比较在 JavaScript 中如何工作?

    我预计以下比较会给出错误 var A B 0 if A B 0 console log true else console log false 但奇怪的是它又回来了false 更奇怪的是 console log A B 1 returns
  • 查看元素的所有 dom 事件

    我有一个 jQuery UI 日期选择器 当您单击日期时 它会清除我的 URL 哈希值 并且不会更改文本框中的日期 我假设某个地方还有其他一些 JavaScript 实用程序 它也正在调用某种委托事件 抛出错误并终止 jquery 处理程序
  • 如何在jsp页面中包含javascript

    我是 J2EE 和 Web 开发的新手 这是我的问题 我想在网页中包含 angular js 这是有效的版本 但我也想要一些本地的 javascript 文件 并且希望我想在本地目录中导入 angularjs
  • AngularJS 应用程序:如何将 .js 文件包含到 index.html 中

    我是 angularJS 的新手 我设法使用 AngularJS 构建了一个phonegap应用程序 该应用程序正常并且运行良好 问题是 现在我对 angularJS 的工作原理有了更多的了解 至少我认为我已经了解了 我担心我的应用程序文件
  • django admin 中内联模型的分页器

    我有这个简单的 django 模型 由一个传感器和特定传感器的值组成 每个日射强度计的值数量很多 gt 30k 是否可以以某种方式分页PyranometerValues在特定日期或一般情况下将分页器应用于管理内联视图 class Pyran

随机推荐

  • 自己编写驱动,应用层程序,在应用层通过ioctl控制LED灯流水,当按键KEY1按下,让风扇转动

    驱动文件 include
  • 海康威视人脸门禁对接开发(一)准备篇

    前一段时间在HR系统中做了一个人脸识别考勤的模块 主要功能 设备注册 下发卡号与人脸 获取卡号与人脸 删除卡号与人脸 对设备布防 报警回调函数 首先在Window上开发 我们项目的JDK是1 6 64位 所以必须要用Win64的SDK开发包
  • 解决Unity3D提示‘Newtonsoft‘could not be found

    原因 Newtonsoft是一个C 中使用Json来进行数据的交互的程序集 1 与Unity自带的插件版本有关系 不能识别到包中的Newtonsoft 2 未导入Newtonsoft dll程序集 提醒你的代码路径 error CS0246
  • win10设置小鹤双拼

    可以使用注册表双击执行或者按步骤操作 Windows Registry Editor Version 5 00 HKEY CURRENT USER Software Microsoft InputMethod Settings CHS En
  • 音视频基础之封装格式与音视频同步

    封装格式的概念 封装格式 也叫容器 就是将已经编码压缩好的视频流 音频流及字幕按照一定的方案放到一个文件中 便于播放软件播放 一般来说 视频文件的后缀名就是它的封装格式 封装的格式不一样 后缀名也就不一样 比如 同样的陷可以做成饺子也可以做
  • php 定义float,MySql中float类型含义及参数详解

    php 定义float MySql中float类型含义及参数详解 float表示浮点数 通俗点来说的话 我们可以简单理解为小数 参数有两个 M表示精度 表示浮点数的位数 D表示标度 表示小数位数 M位数不包括小数点位数 举例 float 6
  • Excel如何将引用的sheet名称全部替换。

    一 设置引用sheet名称 例如为星期2 输入公式 引用A2行内容 星期2 A2 符号为固定单元格 二 将表格3星期3的内容引用到星期一表格中 三 将星期3内容引用到星期一 星期3 A2 如何将星期2全部换成星期3呢 四 将星期1的复制到新
  • 智能制造MES系统的主要内容有哪些?系统有什么作用?

    制造企业非常关注实现生产过程中的实时采集 提高生产排产的效率 实现制造过程的追溯 提升工人与设备的绩效 保证产品质量等问题 调研数据显示 92 的企业渴望加强对生产过程的控制 大多数制造企业已经逐渐清醒地认识到生产技术领先和制造过程管理高效
  • Linux操作系统常见面试题(持续更新)

    1 熟悉命令netstat tcpdump ipcs ipcrm netstat 检查网络状态 tcpdump 截获数据包 ipcs 检查共享内存 ipcrm 解除共享内存 2 共享内存段被映射进进程空间之后 存在于进程空间的什么位置 共享
  • uni-app在真机调试下兼容ethers的方法

    目录 一 安装ethers 二 renderjs 三 注意事项 uni app开发跨平台应用程序 项目搭建主要前端框是Uni app Vue3 TS Vite 项目搭建参考文章Uni app Vue3 TS Vite 创建项目 Hbuild
  • tac_plus安装和配置

    安装 将 http download csdn net detail wingking84 5814131 解压 PROJECTS放到 root下 进入PROJECTS然后执行 make make install 配置 将参考配置文件 ht
  • 英国加密货币流动性提供商获得金融监管机构批准

    点击上方 蓝色字 可关注我们 暴走时评 根据金融行为监管局 FCA 的注册记录 英国加密货币流动性创业公司B2C2 OTC Ltd 已于1月30日获得该国FCA的批准 B2C2将提供电子场外交易 OTC 可以向合格交易方和专业客户提供差价合
  • CUDA——SM中warp调度器调度机制&&访存延迟隐藏

    SM中warp调度器调度机制 访存延迟隐藏 核函数中并不是所有线程一起启动执行的 核函数的执行是以线程束 warps 作为单位 warps的执行由warp调度器进行调度 一个调度器只能调度一个warp去执行指令 一个warp里的所有线程几乎
  • Symbol 'ANDROID_LOG_DEBUG' could not be resolved

    调试JNI代码的时候 加入了调试函数 include
  • 如何构造LL(1)文法预测分析表

    这类题型也经常在考试中出现 一般是与判断是否为LL 1 文法放在一起进行考察 这类题目该怎么去做呢 1 求出每个非终结符的FIRST集和FOLLOW集 在上一篇文章中已经详细介绍 2 构造预测分析表 横坐标是所有的非终结符 纵坐标是所有的终
  • 【计算机视觉

    文章目录 一 STPLS3D 二 DigestPath 三 ImageNet S ImageNet Semantic Segmentation 四 OpenEDS 五 RELLIS 3D 六 SUIM Segmentation of Und
  • React解密:React Hooks函数之useEffect和useLayoutEffect

    useEffect是react hooks的又一个重要的hooks函数 Effect hooks允许你在组件中执行副作用操作 数据获取 设置订阅以及手动更改 React 组件中的 DOM 都属于副作用 不管你知不知道这些操作 或是 副作用
  • js事件的绑定方式

    我们现在绑定的事件都是 onxxxx的方式 这个是DOM0级的事件绑定方式 注 这个方式不是很好 弊端 一旦写了第二个事件 那么第一个就会被覆盖 案例 var oDiv document querySelector div oDiv onc
  • gethup.sh

    docker exec it geth cluster1 bin bash geth datadir data0 networkid 779977 console root 85547cf26bca ethutil cat gethup s
  • 某易云音乐JS逆向案例

    某易云音乐参数破解 目标 aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvc2VhcmNoL20vP3M9JUU2JTg4JTkwJUU5JTgzJUJEJnR5cGU9MQ 某易云音乐是大家喜爱的音乐平台 有小伙伴问我 这