
最近在学习爬网易云的歌曲,在获取单首歌曲的播放地址的时候遇到了一点问题,拜托 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 年 2 月 20 日 via Android 403 有可能是需要什么认证 key 或者登陆 |
2 ss098 2017 年 2 月 20 日 干嘛那么复杂 ... 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 年 2 月 20 日 via iPhone 抓包比较一下两个 http head 的区别应该就知道了 |
5 hcwhan 2017 年 2 月 20 日 via iPhone 看你的秒速 可能是 User-Agent 字段有判断 |
6 hcwhan 2017 年 2 月 20 日 via iPhone 问题看错了 请忽略我的回答 |
7 DlYgod 2017 年 2 月 20 日 |
8 crytis 2017 年 2 月 20 日 via iPhone 你下面的 url 浏览器直接访问也不行 |
9 yingos 2017 年 2 月 20 日 |
10 cherrypick 2017 年 2 月 20 日 我也可以直接访问,不会有 403 |
11 yivanus 2017 年 2 月 20 日 我这边无法访问。 |
12 czvatqin 2017 年 2 月 20 日 我这边现在无法访问, 403 |
13 supermaxisme 2017 年 2 月 20 日 |
14 danili 2017 年 2 月 20 日 404 Not Found |
15 ihuzhou 2017 年 2 月 20 日 默默关注这个问题,搞了好久没搞出来 |
17 fhefh 2017 年 2 月 23 日 nice mark |
18 mingyun 2017 年 2 月 26 日 请问下 dfsid 怎么获取的 |