最近在学习爬网易云的歌曲,在获取单首歌曲的播放地址的时候遇到了一点问题,拜托 V 站各位大神帮看下。 ps: 第一次发帖,对社区的规则还不是很熟悉。
参考 musicbox 加密算法,比如我现在要抓取周杰伦的告白气球,通过抓取我得到它的 dfsid 是 3435973841155597 ,现在我想通过这个破解得到这首歌的播放地址。我是下面这样做的:
破解程序:
import hashlib
import base64
import random
def encrypted_id(id):
magic = bytearray('3go8&$8*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 。
请问上面的程序出错的原因在哪里?
1
zhihaofans 2017-02-20 09:06:10 +08:00 via Android
403 有可能是需要什么认证 key 或者登陆
|
2
ss098 2017-02-20 09:10:12 +08:00
干嘛那么复杂 ...
var httpurl = "http://music.163.com/api/song/detail?id=" + music_id + "&ids=[" + music_id + "]"; 给你摘一句 ... 去年写的,拿到的 URL 可以直接用。 http://projects.qiyichao.cn/netease-music-parse/ |
3
onsala OP @zhihaofans 应该不是登录的原因,因为 403 是到浏览器里面访问得到的,在浏览器里面我已经登录好了。感觉可能是 url 解析的不对,但是[https://github.com/darknessomi/musicbox/blob/master/NEMbox/api.py](musicbox)好像就是我这样做的,不知道我哪里理解错了?
|
4
hcwhan 2017-02-20 09:49:21 +08:00 via iPhone
抓包比较一下两个 http head 的区别应该就知道了
|
5
hcwhan 2017-02-20 09:53:25 +08:00 via iPhone
看你的秒速 可能是 User-Agent 字段有判断
|
6
hcwhan 2017-02-20 09:55:04 +08:00 via iPhone
问题看错了 请忽略我的回答😂😂😂
|
7
DlYgod 2017-02-20 09:55:51 +08:00
|
8
crytis 2017-02-20 10:16:05 +08:00 via iPhone
你下面的 url 浏览器直接访问也不行
|
9
yingos 2017-02-20 10:18:40 +08:00
|
10
cherrypick 2017-02-20 13:58:55 +08:00
我也可以直接访问,不会有 403
|
11
yivanus 2017-02-20 14:26:58 +08:00
我这边无法访问。
|
12
czvatqin 2017-02-20 14:44:22 +08:00
我这边现在无法访问, 403
|
13
supermaxisme 2017-02-20 15:05:00 +08:00
|
14
danili 2017-02-20 16:47:11 +08:00
404 Not Found
|
15
ihuzhou 2017-02-20 18:00:48 +08:00
默默关注这个问题,搞了好久没搞出来
|
17
fhefh 2017-02-23 15:52:28 +08:00
nice mark
|
18
mingyun 2017-02-26 09:10:32 +08:00
请问下 dfsid 怎么获取的
|