进阶用法
深入了解 NCMGET 的高级功能,包括 Cookie 配置、格式化模式、EAPI 加密、错误处理等。
Cookie 配置
部分网易云音乐资源需要登录认证才能访问。通过 cookie() 方法设置 Cookie:
获取 Cookie
- 在浏览器中登录网易云音乐
- 打开开发者工具(F12)
- 切换到 Application(应用) → Cookies
- 找到
MUSIC_U和__csrf的值 - 拼接为 Cookie 字符串:
MUSIC_U=xxx; __csrf=yyy
注意事项
- Cookie 具有时效性,过期后需要重新获取
- 设置 Cookie 后,该实例的所有后续请求都会携带此 Cookie
- 每次调用
cookie()会覆盖之前设置的 Cookie
格式化模式
NCMGET 默认启用格式化模式,将原始 API 响应转换为统一的数据结构。你可以通过 format() 方法切换模式:
格式化模式(默认)
原始模式
通过 raw 属性获取原始数据
即使启用格式化模式,也可以通过 raw 属性获取最近一次请求的原始响应:
EAPI 加密
NCMGET 内部使用网易云音乐的 EAPI 加密协议进行通信。这是网易云音乐客户端使用的原生加密方式,比 Web API 更稳定。
内部机制
NCMGET 的数据处理管道如下:
- 加密:当
ApiConfig.encode为"netease_eapi"时,请求参数会使用 EAPI 加密 - 解码:当
ApiConfig.decode为"netease_url"或"netease_lrc"时,响应数据会使用对应的解码方式处理 - 格式化:当
isFormat为true且ApiConfig.format有值时,会从响应中提取指定路径的数据
ApiConfig 中的加密配置
错误处理
NCMGET Core 层采用不抛出异常的错误处理模式,将错误信息存储在实例属性中。
错误属性
错误类型
检查错误模式
实例安全
NCMGET 实例不是线程安全的。在并发场景下,每个请求应创建独立的 NCMGET 实例:
HTTP 服务器中的实例管理
NCMGET 的 HTTP 服务器已经正确处理了实例安全——每个请求都会创建新的 NCMGET 实例。
重试机制
NCMGET 内置了 HTTP 请求重试机制:
- 重试次数:3 次
- 重试间隔:1 秒
- 超时时间:20 秒
当请求失败时,NCMGET 会自动重试最多 3 次,每次间隔 1 秒。如果所有重试均失败,错误信息将存储在 error 和 status 属性中。
