吴天王 发表于 2020-9-30 01:11

获取九酷音乐文件源地址

系统:Windows10专业版64
工具:Chrome developer tools、postman
语言要求:JavaScript

第一步:打开调试工具,随便播放一首音乐
>如果是第一次播放,会请求一次音乐文件,之后都是读取的缓存。



第二步:复制音乐文件地址,添加到断点。刷新页面看是否能捕获到该请求。刷新之后并没有捕获到,那么接下来换一种方式试试



第三步:查看播放按钮的点击事件。在图3中,可以看到有好几个点击事件。为了确定哪一个点击事件是有效的播放事件,这里可以保留一个点击事件,其他的都移除(点击Remove)。


第四步:经过筛选,获取到有效的播放事件



第五步:点击该点击事件(图4红色框内蓝色字部分),随后会进入到一个JS文件,我们点击箭头指示的按钮,格式化这个文件。



第六步:格式化之后,会进入到第1436行。这里下一个断点(断点位置会在1437行)


第七步:刷新页面,然后点击播放按钮。如果不出意外,会进入到断点处。简单看下调用了什么函数,变量中有哪些信息。有没有特别的地方(主要寻找音乐文件的地址)



第八步:单步调试,按F9或找一找图7红色框内第一行中的按钮。如果不知道这几个按钮是干什么的,那就随便点呗,反正点不坏!
图八是第一次单步之后的界面,这里也没有我想要的数据


第九步:继续单步执行(大概走6、7步),直到图9这个地方。这里可以看到this.status中有了音乐文件的播放地址(this.status.src);



第十步:搜索this.status.media或this.status.src赋值的地方,我只找到了this.status.media赋值的地方(图十中1265行)。
当然,这只是其中一种方式,还有其他方式也可以获取到这个播放地址,这里就只展示这一种。
在这里下个断点,然后刷新页面



第十一步:查看调用的函数,其实根据函数名这里已经可以找到获取播放地址的地方了。
但有点偷懒的意思


第十二步:从setMeida函数依次点击它下面的函数(先调用的函数在下面),直到图12这里,发现了media这个变量就是音乐文件地址


第十三步:继续看下面的函数,图13中可以看到yesplay函数中对media进行了赋值


第14步:在图13中520行下个断点,刷新页面。看看dict.get是干嘛用的。图14中可以到,它只是this变量中的一个值


第15步:继续看下面的函数,直到getmusicinfo这个函数,这个函数中的item变量包含了音乐文件地址


第16步:仔细看一下这个函数,如果在item变量没有值情况下,会请求一个JS文件。并把相应的数据储存到缓存中。
请求路径中的两个变量:id和tpath,id可以从当前播放路径获取,tpath不多说。



第17步:postman测试API,结果:可以获取到。


以下我总结三点
...

最后,如有违规我会及时删除:handshake

吴天王 发表于 2020-12-29 16:50

小飞虫 发表于 2020-10-2 14:33
现在网站是不是改了?我跑到第九步,单步调试就跟不上图片的步骤了
第一次:jcha2.js,1948,this.isDefau ...

这么久没回复,抱歉哈。能这么认真去看并且付出了实际行动,让我太感动了。

我刚才去调试了一下,确实跟上面的调试过程不太一样。他们应该也会偶尔更新JS吧,毕竟一直在运营。

首先,这个调试的目的是为了获取请求音频文件的API。可以跟上面的调试过程一样一点一点分析。也可以打开Google DevTools,直接大概的去看下请求的JS文件内容,看看有没有相关的东西。我刚才试了一下,根据他们的注释很快找到了一个获取下载地址的API。

图片排版确实有两张错了,总体影响不算大。

基础应该要求不算大。如果对此类型的文章感兴趣,强烈推荐看一下这个帖子:XXX视频cKey9.1的生成分析和实现
https://www.52pojie.cn/thread-948353-1-1.html

我这个非专业人士写的帖子比较生硬,可以看下这位大佬写的过程,很详细了。

seeyou_shj 发表于 2020-10-27 10:51

九酷的音乐不错。我也发一个快速下载歌曲的方法。

譬如,我想听《自由自在》这首歌,先找到歌曲地址:

http://www.9ku.com/play/574160.htm

ok,最后那个数字就是了,574160。现在直接用如下地址下载:

http://mp3.9ku.com/hot/2013/12-16/574160.mp3

浏览器打开,没错!另存一下,这首音乐就下来了。

简单吧?简单唬得给个免费的热心值呗?

abcing 发表于 2020-9-30 11:20

纯技术的帖子,可以有,学习一下~

Crazy开发仔 发表于 2020-9-30 11:38

http://www.9ku.com/html/playjs/1001/{歌曲id}.js

取用户名好难 发表于 2020-9-30 11:45

技术。慢慢看。有时间试下

吴天王 发表于 2020-9-30 11:48

发帖的时候批量上传的图片,图片编号混乱了。第N步对应第N张图片就行,最下面的两张图可以无视。与腾讯视频的Ckey获取相比,这里简直是脱光给你看的。技术指数一颗星

eikefeng 发表于 2020-9-30 11:48

很好的帖子,谢谢 了

ilavac 发表于 2020-9-30 11:57

那么最终得出的结论是啥?

或者说

产出物是啥?

小白怎么使用?

吴天王 发表于 2020-9-30 12:03

ilavac 发表于 2020-9-30 11:57
那么最终得出的结论是啥?

或者说


相当于得到一个获取音乐文件的API。利用这个API可以做的事就多了。比如这个API加上采集脚本。。
这个应该容易理解吧,说多了我也怕

qingfeng123 发表于 2020-9-30 12:35

感谢楼主

Gaho2002 发表于 2020-9-30 13:02

F12切音呀
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 获取九酷音乐文件源地址