Jun 12, 2026
酷狗接口分析
1. 前情提要
作为开发者/数据采集者,我们通常会使用
python去爬取一些数据,比如音乐、视频、文本、图片等。那么,我们如何获取这些数据呢?这就需要我们分析接口了。这次的文章,我们就来分析一下酷狗音乐的数据接口。
2. 分析接口
我们要分析的是酷狗的搜索接口,首先搜索一下音乐,之后打开开发工具选择Network,这里会显示我们访问网站所调用的所有接口和代码文件。

一顿操作猛如虎,发现我们需要的数据接口存放在下面的接口里
1 | https://complexsearch.kugou.com/v2/search/song?callback=callback123&srcappid=2919&clientver=1000&clienttime=1781260420114&mid=a6650f8f76d9557ffa4f82121c0d2a34&uuid=a6650f8f76d9557ffa4f82121c0d2a34&dfid=0RB1xg34c8cU0B44j10kLflE&keyword=run%C2%A0wild%EF%BC%88%E5%90%91%E9%A3%8E%E8%80%8C%E9%87%8E%EF%BC%89&page=1&pagesize=30&bitrate=0&isfuzzy=0&inputtype=0&platform=WebFilter&userid=0&iscorrection=1&privilege_filter=0&filter=10&token=&appid=1014&signature=f7fa2d1192ce820c115c1973ca816ced |
因为我们的主要目标是通过代码实现批量爬取或者自动化爬取数据,所以对于接口中的每一个参数都要弄明白具体是啥原理。接下来我先把需要变动的param参数整理成表格,方便大家理解:
| 参数名 | 参数值 | 参数含义 |
|---|---|---|
| clienttime | 1781260420114 | 客户端时间 |
| mid | a6650f8f76d9557ffa4f82121c0d2a34 | 媒体id |
| uuid | a6650f8f76d9557ffa4f82121c0d2a34 | uuid |
| dfid | 0RB1xg34c8cU0B44j10kLflE | 用户登录Token |
| keyword | 内容 | 搜素关键词 |
| signature | f7fa2d1192ce820c115c1973ca816ced | 加密后的参数 |
3. 分析参数
3.1 clienttime
这个参数说白了就是请求的时间,用python实现的话代码如下:
1 | import time # 必须要引入time模块 |
3.2 mid & uuid
这两个参数是随机生成的参数,具体的代码我们可以使用搜索法,在图片所示的地方,搜索关键字mid或者uuid之后搜索。

我们发现生成的代码在getBaseInfo.min.js的js代码中,之后我们分析这个js代码可以找到生成代码s.mid = d.getKgMid() 这个代码是生成mid之后赋值给mid,所以需要推出这个代码生成逻辑,把这个函数复制到搜索那里去搜索这个函数位置。搜索发现这个函数还是在getBaseInfo.min.js中,我们点击这个函数跳转到函数位置发现代码如下:
1 | getKgMid: function() { |
分析代码我们发现大部分都是废话,最核心的代码是:
1 | var n = d.Guid(), e = d.Md5(n); |
他的意思是调用Guid函数生成一个唯一的随机字符串,之后调用md5函数对这个字符串加密,再结合前面他会被赋值给mid和uuid。改成python实现方法为:
1 | import uuid # 导入uuid |
3.3 dfid
这个参数是通过cookie获取,这个的话可以手动通过开发工具去拉取,在一段时间内这个是不会像其他参数一样短期过期的。
3.4 keyword
这个就不用说了,就是搜索的关键词。
3.5 signature
这个参数发有说法,他是对前面的所有参数的一个加密,具体需要的参数是除了signature以外的所有的param参数,这个参数从长度来看大概是md5加密,但是他加密的参数获取需要我们断点来调试。我们使用搜索功能搜索signature参数,我们发现搜出来很多,先从infSign.min.js去找,右键选择open in sources panel,这时候会跳转到sources面板中。之后我们在l.signature = d(s.join(""))这里打断点,如图所示:

接下来刷新网页会在我们断点处停止,我们在右侧发现如图圈起来的部分就是加密需要的所有参数:

1 | [ |
这里的参数除了我们上面提到的,其他的都保持不变即可,接下来我们就可以编写signature的python实现方法了:
1 | import hashlib |
4. 总结
通过上面的分析,我们知道了酷狗搜索接口的参数获取方法,接下来就可以编写爬虫了,这里就不做展示了。酷狗现在的接口相比之前确实有所改变,以前的mid、uuid和clienttime是一样的都是时间戳,后续改成uuid的md5了,不过这些参数的获取方法都是一样的。