某易云音乐JS逆向案例

某易云音乐参数破解

目标: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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值