-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
网易云盘相关API #56
Comments
整个playlist json文件如下: |
MUSIC_U 的COOKIE 会在登陆 时候设置。 http://music.163.com/api/login/cellphone/?csrf_token= 访问这个api的时候会设置。 |
还有http登陆也是醉了 |
MUSIC_U 应该是类似于csrf_token的东西,我之前分析Android客户端API的时候也发现过,应该是反跨站攻击用的 HTTP登陆的问题在 #48 有讨论,起码我确认Android客户端是HTTPS登录的 我们现在的api.py是不保留cookie的(就是没有session), 我正在chaserhkj:cloud这个分支上面试图实现一些修改和收藏歌单的功能,现在这边分支上的api.py版本已经换成使用保留cookie的session http请求了,并且还加了个auth=True的选项用来自动往api请求里添加csrf_token/MUSIC_U,有需要可以看看 = = |
以及我根本就wine不起来网易云音乐Orz, 直接崩溃退出什么的. 我这里都是抓手机客户端的包来分析API…… |
@chaserhkj 咋回事。。我这边ARCH默认就wine的起来啊 要不你来我这看看怎么回事? |
@Catofes 我已经换Gentoo了……不知道和这个有没有关系 |
2333 @chaserhkj 抽空见个面调调看? |
学长机智地提出了面基的建议 (=゚ω゚)= |
@Catofes @chaserhkj 你俩原来是校友啊,好基2333 另外感觉云盘这功能很鸡肋有木有?而且网易承担了一部分未知的侵权风险啊。 |
最重要的是,Mac 版居然没这功能😓 害我找了一圈= = |
是我校的hkj?
|
@draplater 不啊,上面两位是 PKU 的物理大神啦 |
看来确实是我校的…… 2015-04-01 17:17 GMT+08:00 ZHANG RT notifications@github.com:
|
233~ 侵权应该谈不上,比较像Google play music 不过感觉v2 api迟早会上线替换掉现行的啊。
|
好久没来了~~~ |
54cc33d 不知为何,有些歌曲的❤加不上 = = |
网易云音乐客户端提供了一个叫做云盘的东西,可以手工上传曲子,并且播放。不过现在只支持客户端。不知道要不要添加到这个项目里。如图:
图中的Mirai Miracle 就是手工上传的曲子。这个在网页版的api中得不到相关的信息。
用Anyproxy分析了一下PC端的api,大概有以下的结果:
原来api是
http://music.163.com/api/playlist/detail?id=30391223&offset=0&total=true&limit=1001&csrf_token=358c82d006c539e72c6f68583a95ceb9
测试发现新的api变成了
http://music.163.com/api/v2/playlist/detail?id=30391223&offset=0&total=true&limit=1001&csrf_token=358c82d006c539e72c6f68583a95ceb9
当携带Cookie
的时候即可得到结果。测试得到只有携带os=pc 的cookie就可以返回不含云网盘数据的playlist, 也就是等同于现在的api,不过具体的参数以及定义都有所改变。如果想要得到云网盘的数据,需要携带MUSIC_U参数。这个参数还不知道时怎么得到的。貌似正常网页版登陆后也会有这个参数。
然后返回的数据大概如下,做了json的解析:
做了一定的删减,所以数据不完全。可以看出新版本api(毕竟有v2的标识)对于普通曲子的返回结果也变了,直接返回了多个品质的曲子,对应的不同的mp3文件。然后也包涵了自己上传的曲子的相关信息。
重要的有两个信息,一个应该是曲子的id:
"id": 29881275,
一个我猜是用户uid
"uid": 37734080,
访问
http://music.163.com/api/cloud/media/url?id=29881275&uid=37734080&quality=h
既可以得到对应的曲子地址。这个Cookie 只需要 os=pc 这一个存在即可
{"url":"http://m3.music.126.net/20150331230203/a053fee8eb3543bc430d356caffbb1e7/NTMxMzgxODA=/d251a331521f3cfa7618c67ad1c5a54f.mp3","bitrate":320000,"size":8776247,"code":200}
得到的链接应该就是播放链接。
至于本身是网易云的音乐文件,重要的参数是:
"h": {
"br": 320000,
"fid": 7852712045676580,
"size": 8062179,
"vd": -2.36
},
里面的fid。
随后pc会请求
/2LrzOopZvDTHbpM-LJm86w==/7852712045676588.mp3?v=17509840 (这是另一个曲子的链接,和另外一个曲子的fid对应,原来曲子的连接地址被我刷掉了。)测试了一下前面的字符串和现行api.py里面的encrypted_id(id)函数返回的是一样的。
The text was updated successfully, but these errors were encountered: