【酷狗音乐】简单逆向入门

一 、准备工作

二、参数详解

    1.clienttime

    2.signature

    3.encode_album_audio_id

三、结尾



一、准备工作

当你搜索音乐时,通过抓包你会发现会有如下参数在这里插入图片描述
虽然有些参数不知道是什么含义,但是别慌,可以通过对比其他歌曲的参数来确定我们要写的东西
在这里插入图片描述
发现clienttime,encode_album_audio_id,signature这三个参数不同,所以只要改变这三个参数就能够获取到你想要的歌曲了。

二、参数详解

1.clienttime

感觉蛮像时间戳的,用浏览器验证一下
在这里插入图片描述
这个参数刚好对应n,而n又是上面定义了的,刚好是js里面得到时间戳,下面用python实现这个参数

timestamp = str(time.time() * 1000)[0:13:]

2.signature

可以通过搜索看一下
在这里插入图片描述
发现它是由s里的字符串通过d函数加密得来的,最终生成一段32位的密钥,是不是很熟悉呀,这不就是md5吗,而s的值刚好我们也知道,
现在使用python的hashlib库,就可获得密钥了,问题就迎刃而解了。

    obj = md5()
    obj.update(source_text.encode('utf-8'))
    text=obj.hexdigest()

3.encode_album_audio_id

这个参数大概是歌曲的id,我们可以去歌曲搜索页面去抓包看看

在这里插入图片描述
在这里插入图片描述
确定参数方法也是和前面步骤一样,就不过多叙述,直接给结论

clienttime(和上面参数一样的)
keyword(你要听的歌曲)
signature(和上一个步骤一样都是md5加密)

    url = 'https://complexsearch.kugou.com/v2/search/song?'
    signature=Md5('NVPh5oo715z5DIWAeQlhMDsWXXQV4hwtappid=1014bitrate=0callback=callback123clienttime='+timestamp+'clientver=1000dfid=3x7fD93RtFKs0C9yg30SZhjLfilter=10inputtype=0iscorrection=1isfuzzy=0keyword='+song+'mid=aa67be01ec4f35db52689b116d8b8775page=1pagesize=30platform=WebFilterprivilege_filter=0srcappid=2919token=userid=0uuid=aa67be01ec4f35db52689b116d8b8775NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt')
    res = requests.get(url,headers=header,params={
        'callback':'callback123',
        'srcappid':'2919',
        'clientver' :'1000',
        'clienttime':timestamp,
        'mid':'aa67be01ec4f35db52689b116d8b8775',
        'uuid'  : 'aa67be01ec4f35db52689b116d8b8775',
        'dfid':'3x7fD93RtFKs0C9yg30SZhjL',
        'keyword':song,
        'page':'1',
        'pagesize':'30',
        'bitrate':'0',
        'isfuzzy':'0',
        'inputtype':'0',
        'platform':'WebFilter',
        'userid':'0',
        'iscorrection':'1',
        'privilege_filter':'0',
        'filter':'10',
        'token':'',
        'appid':'1014',
        'signature':signature
        }).text
    id_ = re.findall(r'"EMixSongID":"(.*?)"',res,re.S)[0]

三、结尾

现在参数都解决了,就可以通过歌曲的接口找到歌曲的url,从而进行下载。
在这里插入图片描述

    signature = Md5(
        'NVPh5oo715z5DIWAeQlhMDsWXXQV4hwtappid=1014clienttime='+timestamp+'clientver=20000dfid=3x7fD93RtFKs0C9yg30SZhjLencode_album_audio_id='+Id()+'mid=aa67be01ec4f35db52689b116d8b8775platid=4srcappid=2919token=userid=0uuid=aa67be01ec4f35db52689b116d8b8775NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt')
    url ='https://wwwapi.kugou.com/play/songinfo?'
    res = requests.get(url, headers=header,params={
        'srcappid':'2919',
        'clientver':'20000',
        'clienttime':timestamp,
        'mid':'aa67be01ec4f35db52689b116d8b8775',
        'uuid':'aa67be01ec4f35db52689b116d8b8775',
        'dfid':'3x7fD93RtFKs0C9yg30SZhjL',
        'appid':'1014',
        'platid':'4',
        'encode_album_audio_id':Id(),
        'token':'',
        'userid':'0',
        'signature':signature,
    })
    #print(res.json())
    song_name = res.json()['data']['audio_name']
    song_url = res.json()['data']['play_url']
    res1 = requests.get(song_url,headers=header)
    with open(song_name+'.mp3','wb') as f:
        f.write(res1.content)
    print("下载已完成")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值