网易云音乐API获取分析_网易云api 获取歌曲和获取音乐数据怎么不一样
通过程序运行可以看出paras参数是一个json数据集,包含了四个参数,实际测试随着接口的不同参数是可以改变的,csrf_token亲测给不给数据没关系的。Uid可以根据具体的需求来改,参数名称可以从URL中获取到。这些都是什么鬼,你没看错,找不到变量名称吧,一般写程序都是按照功能给变量起特定的名字,但是网易的全是abcdefg。通过分析各种页面,发现参数加密方式都是一致的,所以这就很简单了,其它


网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
它是干什么的呢?它就是用来调用js
中指定的方法的

2、js
中实现参数加密:

Core.js中部分代码:

让我们来看看网易的js
代码

这些都是什么鬼,你没看错,找不到变量名称吧,一般写程序都是按照功能给变量起特定的名字,但是网易的全是abcdefg
什么的,这里应该是使用了代码混淆!
1)第一步可以看到。此处执行了core.js中myFunc()方法,将传入的参数paras进行加密。那么paras参数是什么呢?通过程序运行可以看出paras参数是一个json数据集,包含了四个参数,实际测试随着接口的不同参数是可以改变的,csrf_token亲测给不给数据没关系的。主要是offset和limit,懂数据库的同学应该懂得,起始位置和返回数据的数目。Uid可以根据具体的需求来改,参数名称可以从URL中获取到。

大家再看看ScriptObjectMirror
这个东西,这又是什么鬼?在java6
的API
找了一圈,结果没找到,java7
才支持的,可见作者的见识很广。但是奇怪的是从1.7
找到1.8
也找不到这个东西!

没办去去Oracle
的官网去看API
了,是不是这玩意太偏了,一般用不到。链接如下:
https://docs.oracle.com/javase/9/docs/api/jdk/nashorn/api/scripting/ScriptObjectMirror.html
你没看错,这是JDK9
,也就是Java9
的API
,我能怎么办,我也很无奈啊!先看官方解释:

大家看一看,这不就是和Map
非常相似嘛,get(
参数)
方法中的参数就是key
,返回值就是value
,下面我们来验证一下:这应该是set
集合,以Map.Entry<String,Object>
为泛型类型,通过foreach
我们就可以获取so
存储的全部的值。它的两个key
分别是encText
和encSeckey
,它们的值就是js
加密过后的值。


下面是它的源码:
public
Object get(
final
Object key) {
checkKey(key)
;
return this
.inGlobal(
new
Callable() {
public
Object call() {
return
ScriptObjectMirror.translateUndefined(ScriptObjectMirror.
this
.wrapLikeMe(ScriptObjectMirror.
this
.sobj.get(key)))
;
}
})
;
}
2)第二步就是在Map中设置这两个值,最后整个方法返回一个map对象。
三、数据请求测试
分析测试类:

1)将请求参数封装到json中。

2)封装请求头。
3)请求头中主要修改的是url和data的参数,也就是请求地址和携带的参数。
4)最后通过API接口返回完整的json数据


四、爆出其它的API接口:
通过分析各种页面,发现参数加密方式都是一致的,所以这就很简单了,其它的接口也都出来了。下面做个总结:
1
、搜索API
:
原来的网页地址:
http://music.163.com/#/search/m/?id=28193075&s=%E5%9C%A8%E4%BA%BA%E9%97%B4&type=1
(%E5%9C%A8%E4%BA%BA%E9%97%B4)
这个就是我们在搜索框中输入内容
搜索建议:
http://music.163.com/weapi/search/suggest/web?csrf_token=
按类型搜索:
http://music.163.com/weapi/cloudsearch/get/web?csrf_token=
在原地址上面传递的参数可以分析:
type
类型的不同,搜索的类型不同
type=1
单曲
type=10
专辑
type=100
歌手
type=1000
歌单
type=1002
用户
type=1004 MV
type=1006
歌词
type=1009
主播电台
2
、查看粉丝
请求头:
Referer:http://music.163.com/user/fans?id=97526496
获取指定用户的粉丝:
http://music.163.com/weapi/user/getfolloweds?csrf_token=
3
、动态:
http://music.163.com/user/event?id=97526496
http://music.163.com/weapi/event/get/97526496?csrf_token=
4
、播放
http://music.163.com/weapi/song/enhance/player/url
直接播放地址:id
可以改为任何存在的歌曲的ID



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
4
、播放
http://music.163.com/weapi/song/enhance/player/url
直接播放地址:id
可以改为任何存在的歌曲的ID
[外链图片转存中…(img-Hr2TmqGL-1715582663258)]
[外链图片转存中…(img-ZJsHQHuq-1715582663258)]
[外链图片转存中…(img-5TCIIxLm-1715582663258)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)