一、写在前面:为什么选择网易云音乐?
在爬虫学习者的进阶之路上,网易云音乐是一座绕不开的“大山”。它的评论接口不仅采用了RSA + AES 混合加密,而且每次请求都必须动态生成params和encSecKey两个关键参数。更“贴心”的是,网易云在前端源码中故意放置了混淆后的 JavaScript 加密逻辑,让初学者望而却步。
但正是这种“困难”,让它成为练习JavaScript 逆向、WebAssembly 调试和动态参数模拟的绝佳靶场。
本博客将从零开始,手把手带你:
分析网易云音乐 App 评论接口的完整请求链路;
破解
params(AES-CBC 加密)和encSecKey(RSA 加密)的生成逻辑;使用Python 3.11+纯代码模拟加密,无需额外启动 Node.js 或浏览器环境;
写出高可用、可扩展的爬虫核心模块;
讨论反爬对抗思路与长期维护策略。
声明:本文仅用于技术研究与学习目的,请勿将爬虫用于商业用途或对网易云服务器造成过大压力。爬取数据时请遵守 robots.txt 及平台用户协议。
目录
一、写在前面:为什么选择网易云音乐?
二、目标接口分析与抓包准备
2.1 评论接口 URL
2.2 必须携带的请求头
2.3 请求体——两个神秘的参数
2.4 响应体结构
三、加密参数逆向全流程(核心)
3.1 寻找加密入口——从 Web 源码入手
3.2 AES-CBC 参数详解
3.3 RSA 加密详解
3.4 验证抓包数据
四、Python 实现加密模块(纯代码无 Node)
4.1 准备工作:安装依赖库
4.2 固定常量定义
4.3 生成随机 16 位密钥
4.4 AES-CBC 加密
4.5 RSA 加密(使用公钥)
4.6 完整加密函数
五、构造请求与爬取评论
5.1 模拟请求函数
5.2 解析评论数据
5.3 多页爬取(带限流)
六、获取真实 RSA 公钥(2026 最新方法)
6.1 为什么不能直接使用上面伪代码中的公钥?
6.2 构造 PEM 格式公钥
七、完整可运行代码(2026 版)
二、目标接口分析与抓包准备
2.1 评论接口 URL
在网易云音乐 App 或 Web 端,获取歌曲评论的接口为:
text
POST https://music.163.com/weapi/v1/resource/comments/R_SO_4_{songId}?csrf_token=其中{songId}是歌曲的数字 ID(例如周杰伦《七里香》的 ID 为207010)。
2.2 必须携带的请求头
除了常规的User-Agent、Refere