关于网易云音乐单首歌曲加密算法的破解?
最近在学习爬网易云的歌曲,在获取单首歌曲的播放地址的时候遇到了一点问题,拜托 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 字段有判断
答:问题看错了 请忽略我的回答
0条评论