关于网易云音乐单首歌曲加密算法的破解?

关于网易云音乐单首歌曲加密算法的破解?,第1张

关于网易云音乐单首歌曲加密算法的破解?,第2张

最近在学习爬网易云的歌曲,在获取单首歌曲的播放地址的时候遇到了一点问题,拜托 V 站各位大神帮看下。 ps: 第一次发帖,对社区的规则还不是很熟悉。

参考 musicbox 加密算法,比如我现在要抓取周杰伦的告白气球,通过抓取我得到它的 dfsid 是 3435973841155597 ,现在我想通过这个破解得到这首歌的播放地址。我是下面这样做的:

破解程序:

import hashlib
import base64
import random

def encrypted_id(id):
    magic = bytearray('3go8&*3*3h0k(2)2', 'u8')
    song_id = bytearray(id, 'u8')
    magic_len = len(magic)
    for i, sid in enumerate(song_id):
        song_id[i] = sid ^ magic[i % magic_len]
    m = hashlib.md5(song_id)
    result = m.digest()
    result = base64.b64encode(result)
    result = result.replace(b'/', b'_')
    result = result.replace(b'+', b'-')
    return result.decode('utf-8')

调用程序:

song_dfsId = str(3435973841155597)
enc_id = encrypted_id(song_dfsId)
url = 'http://m%d.music.126.net/%s/%s.mp3' % (random.randrange(1, 3), enc_id, song_dfsId)
print url

输出的运行结果是:

http://m2.music.126.net/RMJR7wDullRqppBk8dhLow==/3435973841155597.mp3

如果直接拿上面的 url 去访问会报 403 错误,通过在浏览器下面抓包歌曲正确的 url 应该是 http://m10.music.126.net/20170220090502/e6fb244e65e9ee9933982e16e10c218c/ymusic/6e01/a4d4/bbef/2dda07904eb54d44abb278165e1c6ead.mp3 。

请问上面的程序出错的原因在哪里?

@yingos 问题解决了, http://m2.music.126.net/RMJR7wDullRqppBk8dhLow==/3435973841155597.mp3 可以正确访问,昨天可能是浏览器配置有一点问题。 ----------------------- 以下是精选回复-----------------------

答:403 有可能是需要什么认证 key 或者登陆
答:干嘛那么复杂 ...

var httpurl = "http://music.163.com/api/song/detail?id=" + music_id + "&ids=[" + music_id + "]";

给你摘一句 ... 去年写的,拿到的 URL 可以直接用。

http://projects.qiyichao.cn/netease-music-parse/
答:抓包比较一下两个 http head 的区别应该就知道了
答:看你的秒速 可能是 User-Agent 字段有判断
答:问题看错了 请忽略我的回答

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 关于网易云音乐单首歌曲加密算法的破解?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情