ncmm

command module
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 8, 2026 License: MIT Imports: 1 Imported by: 0

README

ncmm

🎵 ncmm

ncmm 是一个专门为网易云音乐人设计的命令行助手工具,基于 Go 语言(Go 1.25.0+)开发。

本项目旨在帮助网易云音乐人一键完成日常签到、自动执行黑胶 VIP 进阶任务(包括图文笔记自动发布与秒删、多粉丝号接力刷播放量等),帮助音乐人轻松获取并维持黑胶会员权益。工具严格遵循防风控设计,支持多账号安全隔离、播放量分摊回退、日推歌曲混听干扰以及本人播放拦截等安全策略。


🚀 核心功能

  1. 🔑 账号登录管理 (ncmm login)
    • 扫码登录 (qrcode):在终端命令行直接渲染并打印二维码字符,同时在本地生成二维码图片,用户使用手机网易云音乐 APP 扫码即可快捷登录。
    • 手机号登录 (phone):支持使用短信验证码(发送验证码并在终端交互输入)或账号密码进行登录。 (⚠️ 存在风控,不建议使用)
    • Cookie 导入 (cookie):支持从文本或文件导入 Cookie。具备对 JSON 数组格式、Netscape 文本格式以及传统 HTTP Header 格式 Cookie 的自动识别和解析能力。
    • CookieCloud 同步 (cookiecloud):通过配置 CookieCloud 的服务器地址、UUID 和密码,自动拉取并过滤同步网易云音乐的 Cookie。

[!WARNING] 关于登录风控的重要提示 网易云音乐对非官方 IP/客户端的手机验证码和密码登录限制极其严苛,在非官方客户端登录极易高频触发图形滑块验证,甚至导致账号被保护性限制。强烈推荐使用 Cookie 导入/同步 (cookie/cookiecloud),以此保障账号安全与程序稳定。

  1. 🎵 模拟歌曲播放 (ncmm playids)

    • 针对指定的 songId 歌曲池(支持命令行参数直接传入,或从外部文本文件批量读取),通过接口请求与时延等待来模拟播放:
      • 获取播放链接:调用 SongPlayerV1 接口获取歌曲的流媒体 URL。
      • 模拟音频拉取:首次播放某首歌曲时,真实请求 CDN 地址拉取音频数据至内存以模拟完整流量交互;单次运行中相同的歌曲再次播放时直接读取内存记录,避免重复下载以节省网络带宽。
      • 真实时长等待:前台展示进度条,程序会真实等待(time.Sleep)该首歌曲对应的完整时间。
      • 播放动作上报:歌曲播放结束后,调用网易云音乐的 WebLog 接口,发送播放行为日志。
      • 随机播放间隔:每首歌曲播放完毕后,在配置的 gap-mingap-max 秒范围内随机休眠,再开始下一首。
  2. 📊 每日播放目标控制与本地进度存储

    • 播放状态和进度记录在本地嵌入式 Badger 数据库中。
    • 随机每日上限:每天首次启动时,系统在配置文件设定的 [daily_min, daily_max] 区间内随机生成一个今日播放目标并存入数据库。当天的多次运行将复用这一目标。
    • 限额自增与达标退出:每播放成功一首,本地已播计数自增;当今日播放数量达到随机目标上限时,程序将自动跳过并退出,防止每日播放次数恒定。
    • 单次运行目标:支持通过 [run_min, run_max] 参数设定单次运行的播放歌曲数。
  3. 📅 每日任务签到与云贝任务一键闭环 (ncmm sign)

    • 一键完成多种端签到与任务奖励申领:
      • 多日常签到:自动完成音乐人日常签到(申领云豆奖励)、黑胶 VIP 会员签到(一键领取可领成长值)及云贝中心每日签到。
      • 云贝做任务打卡套件:通过模拟真机前台操作与精心设计的防风控时延,自动打卡多项云贝日常任务并自动领取云贝奖励:
        • 浏览会员中心:触发浏览任务并在前台随机浏览 15~25 秒自动打卡。
        • 点赞评论/动态:自动点赞 10 个热门评论,在 3~10 秒随机延迟后取消点赞,避免账号被风控封禁。
        • 探索小众歌曲:严格串行播放 10 首推荐小众歌曲。先批量拉取歌曲详情,每首播放 31~50秒 后依次调用凭证分配接口和听歌上报接口,完美匹配官方风控模型。
        • 关注歌手:关注首位热门歌手,3~10 秒后自动取消关注。
        • 收藏歌曲:自动添加指定曲目至首个个人歌单,3~10 秒后从歌单中删除该歌曲(取消收藏)以避嫌。
        • 红心歌曲:对第一首日推单曲进行红心,3~10 秒后自动取消红心。
        • 预约领云贝 :自动查询状态,未预约则自动预约,已预约则自动领取云贝奖励。
      • 精细化控制开关:支持在配置文件中通过独立配置项,选择性开启或关闭每一项具体做任务分支。
  4. 🎖️ 音乐人黑胶会员进阶任务 (ncmm musician-vip)

    • 自动查询进阶任务进度,按需执行并加速任务达标:
      • 图文笔记发布:若笔记发布天数未达标,自动调用公共的 Note 笔记服务发布图文笔记,并在成功后自动删除。
      • 播放量达标任务:若播放次数未达标,自动调用本地 playids 的真实模拟播放与上报逻辑。播放过程严格遵守防风控的随机每日上限机制,降低封号风险。
      • 多账号隔离:支持配置独立的 fan1.json 作为进阶任务刷歌账号的 Cookie,确保主账号(音乐人账号)与辅助账号的安全隔离。
  5. 📝 笔记单独发布功能 (ncmm note)

    • 将图文笔记发布与秒删逻辑,作为一个独立的公共服务,可单独执行。
    • 支持通过顶级命令 ncmm note 独立拉起发布。发布时会自动从图片链接池下载图片上传,并随机选择配置的标题与正文进行发布。
    • 支持设置发布成功后自动秒删(5~30秒随机等待),保证个人主页干净整洁。该服务也被 musician-vipsign (云贝签到任务) 共享调用。
  6. 📁 灵活的 --home 多账号工作目录机制

    • 支持通过全局参数 --home 指定运行目录,自适应实现配置、Cookie、数据库、日志等多账号隔离:
      • 自动加载配置:未指定 -c / --config 时,若 --home 目录中存在 config.yaml,将自动加载它。
      • 独立会话隔离:每个工作目录拥有独立的 cookie.json、Badger 数据库和日志文件,互不干扰。
      • 登录路径自适应:在 ncmm login cookie -o <文件名> 导出 Cookie 时,若输出路径为相对路径,将自动基于 --home 目录进行拼装,极大简化了多账号脚本的管理。

⚙️ 配置文件说明 (config.yaml)

默认配置文件路径为 ~/.ncmm/config.yaml(支持在运行时通过 -c--config 指定)。配置字段如下:

# 配置文件版本
version: 1.0

# 顶级多账号管理
accounts:
  # 音乐人主账号 Cookie 文件路径
  primary: "${HOME}/.ncmm/cookie.json"
  # 辅助刷量账号 Cookie 列表
  secondary:
    - "${HOME}/.ncmm/fan1.json"
    - "${HOME}/.ncmm/fan2.json"

# log 日志模块配置
log:
  # 应用名称
  app: ncm
  # 日志输出格式: text / json
  format: text
  # 日志级别: debug < info < warn < error
  level: info
  # 日志是否输出到标准输出 (控制台)
  stdout: false
  # 滚动日志配置
  rotate:
    # 日志文件保存路径
    filename: "${HOME}/.ncmm/log/ncm.log"
    # 单个日志文件最大大小 (单位: MB)
    maxsize: 100
    # 日志文件保留天数
    maxage: 7
    # 日志文件保留最大数量
    maxbackups: 3
    # 日志打印是否使用本地时间
    localtime: true
    # 日志文件是否启用 gzip 压缩
    compress: true

# 网络模块配置
network:
  # 是否开启 resty 调试日志输出
  debug: false
  # 全局请求超时时间
  timeout: 60s
  # 网络请求失败重试次数
  retry: 3
  # 全局自定义 User-Agent
  user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"

# 本地数据存储 (主要记录播放状态进度)
database:
  # 缓存驱动类型,目前仅支持 badger
  driver: badger
  # 缓存目录路径
  path: "${HOME}/.ncmm/database/badger/"

# playids 播放指定歌曲配置 (原生独立播放)
playids:
  # 每日播放目标随机下限 (每天首次启动时在此范围内随机生成当日目标)
  daily_min: 50
  # 每日播放目标随机上限
  daily_max: 200
  # 单次运行目标下限 (为 0 表示单次不设限,直到跑完今日剩余播放目标)
  run_min: 0
  # 单次运行目标上限
  run_max: 0
  # 歌曲与歌曲之间的静默间隔最小值 (单位: 秒)
  gap_min: 10
  # 歌曲与歌曲之间的静默间隔最大值 (单位: 秒)
  gap_max: 30
  # 默认歌曲 ID 列表(逗号分隔的字符串,与命令行 ids 采用并集去重合并)
  ids: ""
  # 默认歌曲 ID 文件路径(与命令行 ids-file 采用并集去重合并;支持本地路径或 http/https 远程链接)
  idsFile: ""
  # 独立播放账号控制(命令行参数未指定 --cookie-file 时生效)
  enablePrimary: false      # 默认不启用主账号刷歌
  enableSecondaries: true   # 启用所有辅助账号刷歌

# 签到任务配置
sign:
  enablePrimary: true       # 启用主账号日常签到
  enableSecondaries: true   # 启用所有辅助账号日常签到(增加其账号活跃度防风控)
  identityCacheDays: 0      # 账号身份本地缓存天数
  yunbeiTask:
    enableViewVipCenter: true       # 浏览会员中心任务开关
    enableLikeComment: true         # 点赞评论和动态任务开关
    enableListenIndie: true         # 探索小众歌曲任务开关
    enableReserve: true             # 预约领云贝任务开关
    enableFollowArtist: true        # 关注歌手任务开关
    enableLikeSong: true            # 红心歌曲任务开关
    enableCollectSong: true         # 收藏歌曲任务开关
    enablePublishNote: true         # 发布图文动态任务开关
    enablePlayDailyRecommend: false  # 是否启用云贝签到中的日推歌曲播放任务开关

# 模拟播放日推干扰配置
mixPlay:
  enabled: true             # 是否在模拟播放中掺杂日推歌曲作为干扰
  dailyRecommendRatio: 0.3  # 日推混听干扰占比 (如 0.3 表示 30% 日推)
  countTarget: false        # 混听的日推歌曲是否计入播放目标(若为 false,则每日/单次目标仅统计主歌,日推只起风控干扰作用,不占任务额度;若为 true,则日推也算在目标数内)

# note 笔记发布公共配置
note:
  # 笔记标题列表。每次发布图文笔记时会从中随机选择一个作为标题(若有 titlesFile 则会进行并集合并)
  titles:
    - "今日音乐分享"
    - "音乐人的日常"
    - "分享好听的歌"
    - "每日歌单推荐"
  # 动态发布标题列表文件路径 (支持本地路径与远程 http/https 链接,会与 titles 并集合并)
  titlesFile: "https://tinyurl.com/4pjvv5j7"
  # 笔记文字内容。每次发布时会从中随机选择一条作为正文(若有 messagesFile 则会进行并集合并)
  messages:
    - "分享一首好听的歌~"
    - "音乐是最好的陪伴"
    - "今天也要好好听歌呀"
    - "用音乐记录生活"
  # 动态发布文本列表文件路径 (支持本地路径与远程 http/https 链接,会与 messages 并集合并)
  messagesFile: "https://tinyurl.com/457fuy38"
  # 图片 URL 链接池。每次发布时会从中随机挑选一个 URL 进行下载并上传
  imageUrls:
    - "https://tinyurl.com/mruxfba5"
  # 动态类型: 35=普通动态, 39=图文笔记
  type: 39
  # 是否在笔记发布成功后自动删除(秒删),以保持个人主页整洁。默认开启
  autoDelete: true

# 音乐人黑胶会员进阶任务配置
musicianVip:
  # 播放任务配置 (专门用于进阶任务的接力刷歌)
  play:
    # 进阶任务专属覆盖的歌曲 ID(留空继承 playids.ids,支持并集去重合并)
    ids: ""
    # 进阶任务专属覆盖的歌曲 ID 文件路径(留空继承 playids.idsFile,支持并集去重合并)
    idsFile: ""
    # 进阶任务单次运行的播放歌曲随机目标下限 (为 0 则继承 playids.run_min)
    run_min: 0
    # 进阶任务单次运行的播放歌曲随机目标上限 (为 0 则继承 playids.run_max)
    run_max: 0
    # 两首歌曲之间的最小随机等待间隔(秒,为 0 则继承 playids.gap_min)
    gap_min: 0
    # 两首歌曲之间的最大随机等待间隔(秒,为 0 则继承 playids.gap_max)
    gap_max: 0

🛠️ 编译与安装

在项目根目录下执行以下命令进行编译:

go build -o ncmm.exe main.go

提示:在 Linux / macOS 等类 Unix 平台下,请编译为 ncmmgo build -o ncmm main.go


📖 命令行使用说明

0. 全局通用参数

ncmm 命令支持以下全局通用参数,可以跟在主命令或任意子命令后:

  • -c / --config (String):指定配置文件 config.yaml 的路径。若未指定,且配置了 --home,程序将自动尝试加载 --home 目录下的 config.yaml;若仍未找到,默认尝试加载 ${HOME}/.ncmm/config.yaml;若该文件不存在,则会使用程序内置的默认配置值。
  • --home (String):指定数据存储的家目录。默认值为当前用户的系统家目录(${HOME})。该家目录将用于存放运行日志(log/)、Cookie 状态文件(cookie.json)以及本地 Badger 数据库(database/)。通过配合不同 --home 路径,可以极简、安全地实现多账号数据物理隔离。
  • --debug (Boolean):开启命令行调试模式。开启后,日志会强制输出到标准输出(Stdout),日志级别临时设为 debug,并输出底层的网络请求调试信息。

1. 账号登录 (ncmm login)

进行歌曲播放前,必须执行登录操作以保存登录凭证(Cookie 数据默认存放在家目录下的 cookie.json 中)。

二维码扫码登录 (qrcode)
ncmm login qrcode [-t 超时时间] [-d 图片输出目录] [-l 二维码纠错等级]
# 示例:5分钟超时,二维码图片保存在当前目录
ncmm login qrcode -t 5m -d ./
  • -t / --timeout (Duration): 扫码等待和状态轮询的超时时长,默认 5m (5分钟),可填 10m30s 等。
  • -d / --dir (String): 保存临时二维码图片 qrcode.png 的目录路径,默认当前工作目录。登录成功或超时后该文件会自动清理。
  • -l / --level (Int): 二维码纠错等级(0 -> 7%, 1 -> 15% 默认, 2 -> 25%, 3 -> 30%)。
手机号登录 (phone) (⚠️ 存在高风控拦截风险,不推荐)
# 短信验证码登录 (不指定密码时会自动发送验证码,并在控制台交互提示输入验证码)
ncmm login phone 188xxxx8888

# 密码登录
ncmm login phone 188xxxx8888 -p "YourPassword"
  • -p / --password (String): 登录账号密码。不提供该参数时,系统将使用验证码登录。
  • --countrycode (Int): 国家及地区代码,默认 86 (中国大陆)。
  • -t / --timeout (Duration): 登录操作的超时时间,默认 10m (10分钟)。

支持自动识别 Header 字符串、JSON 数组、Netscape 文件等多种 Cookie 格式,并可将解析出的标准化 JSON 格式 Cookie 写入到指定输出 file:

# 1. 导入 Cookie 字符串并默认保存至 cookie.json (对应主账号)
ncmm login cookie 'MUSIC_U=xxxx; __csrf=yyyy;'

# 2. 从外部 Cookie 文本文件导入(不指定 -o 时,系统会自动保存为 cookie.json)
ncmm login cookie -f ./cookie.txt

# 3. 导入辅助账号 Cookie 文件(不指定 -o,系统会根据输入文件名自动另存为 fan1.json)
ncmm login cookie -f ./fan1.txt

# 4. 手动指定输出的 Cookie 文件名(例如将本地的 my_fan.txt 导入为配置文件中声明的 fan1.json)
ncmm login cookie -f ./my_fan.txt -o fan1.json

# 5. 配合 --home 指定工作目录导入辅助账号(以下命令会自动将 fan1.txt 解析并保存到 run/ 文件夹下的 fan1.json 中)
ncmm --home run login cookie -f ./fan1.txt
  • -f / --file (String): 存放 Cookie 的输入文件路径。如果指定此参数,将从该文件中读取 Cookie。
  • -o / --output (String): 保存解析后的 JSON Cookie 文件名。
    • 自动保存(无需手动指定 -o:如果您使用了 -f ./fan1.txt 导入,系统会自动为您另存为 fan1.json。如果什么文件都没传(例如从命令行直接导入),默认保存为 cookie.json(对应主账号)。
    • 手动保存:如果您想给导入的 Cookie 起个别名,也可以用 -o 强行指定文件名(例如 -o fan2.json)。
    • 存放目录:如果您填写的是相对路径(如 fan1.json),系统会自动将它保存到您通过 --home 参数指定的运行工作目录下,无需担心它生成到其他地方。
  • --format (String): 手动指定导入 Cookie 文件的格式(支持 jsonnetscapeheader),不指定则程序会自动探测并尝试三种格式。
CookieCloud 同步 (cookiecloud)
ncmm login cookiecloud -u <UUID> -p <密码> -s <服务器地址>
  • -u / --uuid (String): CookieCloud 账户的 UUID,必填。
  • -p / --password (String): CookieCloud 账户的密码,必填。
  • -s / --server (String): CookieCloud 服务器端点地址,默认 http://127.0.0.1:8088
  • -t / --timeout (Duration): 请求 CookieCloud 服务器的超时时长,默认 30s
  • -H / --headers (String): 请求 CookieCloud 时的自定义 HTTP 头部信息,格式为 key1=value1,key2=value2

2. 模拟播放 (ncmm playids)

该命令用于模拟播放指定歌曲列表。

ncmm playids --ids <songId列表> [--ids-file <文件>] [--num <播放数量>] [--gap-min <秒>] [--gap-max <秒>] [--daily-min <下限>] [--daily-max <上限>]
📌 参数说明
参数/Flag 说明 默认值
--ids 逗号分隔的歌曲 ID 列表
--ids-file 从文本文件或远程网络 URL 读取歌曲 ID 列表(每行一个 ID,支持 # 注释,支持本地路径及 http:///https:// 远程链接)
--num 本次运行最大播放的歌曲数量(0 表示播到今日目标上限为止) 0
--gap-min 歌曲切换之间的最小随机等待间隔(秒) 配置项 gap_min / 10
--gap-max 歌曲切换之间的最大随机等待间隔(秒) 配置项 gap_max / 30
--daily-min 当天首次启动时,随机目标的最小歌曲数限制 配置项 daily_min / 50
--daily-max 当天首次启动时,随机目标的最大歌曲数限制 配置项 daily_max / 200
--run-min 单次运行的最小歌曲数量设定 配置项 run_min / 0
--run-max 单次运行的最大歌曲数量设定 配置项 run_max / 0
💡 使用示例
# 1. 播放指定的多个歌曲 ID(在默认系统家目录下的 .ncmm 工作区运行)
ncmm playids --ids 3373818852,3373845775

# 2. 从歌曲 ID 列表文件读取并播放
ncmm playids --ids-file ./songs.txt

# 3. 调试播放:只播放 1 首,且无等待间隔
ncmm playids --ids 3373818852 --num 1 --gap-min 0 --gap-max 0

# 4. 配合 --home 在指定的隔离工作目录下运行播放任务(自动加载 run/config.yaml 并在该目录下轮询辅助账号进行播放)
ncmm --home run playids --ids 3373818852,3373845775

songs.txt 文件示例:

# 这是一行注释,系统会自动跳过
3373818852
3373845775

3. 每日任务签到 (ncmm sign)

该命令用于一键执行每日的多项任务签到,包含:音乐人签到、云豆领取、云贝中心日常签到与做任务自动打卡、VIP 乐签及成长值领取。

# 1. 在默认系统家目录工作区执行日常一键签到与云贝任务打卡
ncmm sign

# 2. 配合 --home 在指定的隔离工作目录下执行日常一键签到与做任务(自动加载 run/config.yaml 轮询该目录下的所有账号)
ncmm --home run sign
💡 运行流程
  1. 音乐人签到:自动调用 /api/creator/user/access 完成音乐人中心签到。
  2. 领取云豆:自动拉取当前的音乐人任务列表,并自动对所有“已完成未领取”状态的任务领取对应的云豆奖励。
  3. 云贝日常签到:自动执行云贝中心每日签到。
  4. 云贝做任务(前置查询与串行执行)
    • 自动查询当前账号的待完成任务列表。
    • 依次串行执行未完成的浏览、点赞、小众歌曲听歌、关注歌手、红心、收藏歌曲、预约等任务,并在每项任务打卡成功后自动一键申领云贝。
    • 特别针对“探索小众歌曲”任务,每首歌曲模拟听歌播放 31~50 秒,交替调用云贝凭证分配与听歌记录上报接口,避免触发系统的防作弊检测。
  5. VIP 乐签及成长值:若是 VIP 会员,则自动进行每日黑胶乐签,并一键领取当前可领取的成长值奖励。
💡 运行日志示例
[sign] >>>>>> 开始主账号签到 (run/cookie.json) <<<<<<
  [当前账号信息] Uid: 1024****01 | 等级: 黑胶·伍 (Lv.5)
  --- 音乐人任务 ---
  ✅ 音乐人签到成功
  --- 云豆任务 ---
  ✅ 云豆领取成功: 任务="每日听歌15分钟", 奖励=20云豆
  --- 云贝任务 ---
  ✅ 云贝签到成功
  👉 成功获取云贝任务列表:
    - 任务: 浏览会员中心    | 状态: 未完成 | 奖励: 100 云贝
    - 任务: 探索小众歌曲    | 状态: 未完成 | 奖励: 150 云贝
    - 任务: 点赞评论、动态  | 状态: 已完成 | 奖励: 200 云贝
  👉 正在检查 [预约领云贝] 状态...
  ℹ️ 当前预约状态: [上次奖励已领,新活动已预约],无须做预约或领奖操作
  👉 开始执行 [浏览会员中心] 任务...
  ⏳ 已模拟触发浏览会员中心任务,随机浏览 21 秒...
  ✅ 浏览会员中心模拟结束
  👉 开始执行 [探索小众歌曲] 听歌任务...
  👉 已拉取到 10 首推荐小众歌曲,开始依次串行听歌打卡...
  ⏳ 正在听第 1/10 首小众歌曲: ID=3389465125 , 歌名=旧游记 (模拟播放 42秒)...
  🎉 [听歌打卡 1/10] 成功申请云贝分配凭证
  ✅ [听歌打卡 1/10] (歌曲 ID: 3389465125) 听歌完毕,成功上报
  ...
  ✅ 探索小众歌曲 10 首打卡完毕
  👉 重新获取任务列表并领取奖励...
  🎉 成功领取云贝 [浏览会员中心] 任务奖励,获得云贝: 100
  🎉 成功领取云贝 [探索小众歌曲] 任务奖励,获得云贝: 150
  --- VIP签到 ---
  ✅ VIP乐签成功, 获得经验=10
  ✅ 黑胶成长值已一键领取成功

4. 音乐人黑胶会员进阶任务 (ncmm musician-vip)

该命令用于自动化完成网易云音乐人黑胶会员的“进阶任务”(musician-vip),从而保持或获取黑胶会员权益。

# 1. 在默认系统家目录工作区执行日常黑胶进阶任务
ncmm musician-vip

# 2. 配合 --home 在指定的隔离工作目录下执行日常黑胶进阶任务(自动加载 run/config.yaml 读取辅助账号接力刷播)
ncmm --home run musician-vip
💡 运行流程与原理
  1. 检测音乐人状态:拉取进阶任务列表 /api/nmusician/workbench/special/right/vip/info 获得当前进度。
  2. 图文笔记发布任务:若进阶任务中“发布图文动态”天数未达标,程序会自动:
    • config.yaml 配置文件中的 imageUrls 中随机挑选一个外网图片地址并将其下载。
    • 上传图片资源(/api/nos/token/alloc 和 CDN 上传)。
    • 随机选择一条 messages 配置文字,发布图文笔记(/api/event/publish)。
    • 笔记发布成功后,程序会在 10 秒后自动删除该动态(/api/event/delete),保持个人主页的整洁。
  3. 有效播放次数任务:若进阶任务中“有效播放次数”未达标,程序将自动调用本地播放逻辑:
    • 多辅助号接力刷播:程序会自动从配置的 accounts.secondary 辅助号池中依次读取 Cookie 文件。主账号用于查询任务状态,辅助号池用于执行播放任务。
    • 自动额度分摊与上限回退:若某个辅助号在播放过程中触发了本地今日随机上限,程序会自动计算该账号已贡献的有效主歌播放量,将剩余未完成的播放额度回退,并自动重新分配给下一个可用的辅助账号(例如从 fan1.json 自动转移接力到 fan2.json)继续完成,实现全自动化接力,直至任务完全达标或所有辅助号均达上限。
    • 混听风控与本人过滤:在每个账号刷歌时,支持掺杂网易云每日推荐歌曲(占比 30% 可配)。程序会在任务启动时自动拉取一次日推列表(通常 30 首)并缓存在内存中,在每一轮(Round)播放开始前重新随机抽选对应占比的日推 ID 并与主歌洗牌打乱,既完美模拟了真实用户在列表中随机挑选播放的行为,又避免了频繁拉取接口触发反作弊系统。并且程序会自动拦截歌手/DJ本人歌曲的播放,如果发现播放歌池中含有当前听歌账号本人的作品,会自动跳过,避免无效自刷被平台惩罚。
💡 多辅助号接力刷播运行日志示例

以下为 ncmm musician-vip 运行时的真实多账号接力日志(敏感的 UID、数字和昵称已脱敏混淆):

[musician-vip] 处理播放任务...
[musician-vip] 当前进度: 120/200, 今日尚缺有效播放: 80 次
[musician-vip] >>>>>> 分摊任务开始: 选用账号 (run/fan1.json), 本次需刷总数(含日推): 30 首, 尚缺主歌有效数: 80 次 <<<<<<
[2026-06-04 16:30:00] [playids] 当前账号:uid=1024****68 昵称="粉丝一号"
[2026-06-04 16:30:00] [playids] 今日风控目标: 已完成=50首, 今日随机上限=80首
[2026-06-04 16:30:00] [playids] 正在调用接口获取歌曲详情...
[2026-06-04 16:30:01] [playids] 启用混听干扰风控:自动拉取辅助账号每日推荐...
[2026-06-04 16:30:02] [playids] 混听风控设置:成功获取到 30 首可用日推,每轮将随机选出 9 首掺杂播放
[2026-06-04 16:30:02] [playids] 播放任务启动:本次目标刷播=30首, 今日已播累计=50首, 今日随机上限=80首
[2026-06-04 16:30:02] [playids] ====== 开始第 1 轮播放 (本轮共 30 首) ======
[2026-06-04 16:30:02] [playids] 正在播放:第1/30首,第1轮第1首,songId=1934****66, 歌名="歌曲A", 时长=4m10s
[2026-06-04 16:30:02] [playids] 开始拉取资源:songId=1934****66
[2026-06-04 16:30:05] [playids] 拉取完成:songId=1934****66, 来源=CDN, 已耗时=3.25s, 补等待=4m10s
[2026-06-04 16:30:05] [playids] 播放进度: 0s/4m10s (0%) ...
...
[2026-06-04 16:34:15] [playids] 播放进度: 4m10s/4m10s (100%) [====================]
[2026-06-04 16:34:15] [playids] 播放上报成功:songId=1934****66, 上报时长=250s
[2026-06-04 16:34:15] [playids] 本首结果:第1/30首,成功,songId=1934****66, 歌名="歌曲A"
...
[2026-06-04 16:45:10] [playids] 播放上报成功:songId=3381****72, 上报时长=120s
[2026-06-04 16:45:10] [playids] ⚠️ 触发今日风控随机播放总上限 (80首),优雅退出当前运行
[2026-06-04 16:45:10] [playids] 本次实际运行总上报数: 30,成功: 30
[musician-vip] 账号 (run/fan1.json) 播放完成,实际贡献主歌有效上报数: 21 次
[musician-vip] >>>>>> 分摊任务开始: 选用账号 (run/fan2.json), 本次需刷总数(含日推): 50 首, 尚缺主歌有效数: 59 次 <<<<<<
[2026-06-04 16:45:11] [playids] 当前账号:uid=1024****69 昵称="粉丝二号"
[2026-06-04 16:45:11] [playids] 今日风控目标: 已完成=0首, 今日随机上限=120首
[2026-06-04 16:45:11] [playids] 正在调用接口获取歌曲详情...
[2026-06-04 16:45:12] [playids] 启用混听干扰风控:自动拉取辅助账号每日推荐...
[2026-06-04 16:45:13] [playids] 混听风控设置:成功获取到 30 首可用日推,每轮将随机选出 15 首掺杂播放
[2026-06-04 16:45:13] [playids] 播放任务启动:本次目标刷播=50首, 今日已播累计=0首, 今日随机上限=120首
[2026-06-04 16:45:13] [playids] ====== 开始第 1 轮播放 (本轮共 50 首) ======
...
[musician-vip] ✅ 经过多个辅助账号的接力刷歌,主账号的播放任务已圆满达标!

5. 笔记单独发布 (ncmm note)

该命令用于单独发布图文动态/笔记。该服务也同时被 musician-vipsign 任务内部直接调用。

ncmm note [--cookie-file <cookie文件路径>]
💡 使用示例
# 1. 使用默认配置中的主账号发布图文笔记(在系统默认家目录下运行)
ncmm note

# 2. 指定额外的 Cookie 文件路径发布
ncmm note --cookie-file run/cookie.json

# 3. 配合 --home 在指定的隔离工作目录下发布
ncmm --home run note

6. 多账号运行目录最佳实践 (--home)

在多账号运作或需要使用多个辅助号为自己(音乐人主账号)刷播放量的场景下,推荐使用 --home 构建如下目录结构:

run/
├── config.yaml       # 多账号公共/专用配置文件(配置了顶级 accounts 以及 sign/mixPlay)
├── cookie.json       # 主账号 cookie(网易云音乐人主号,由 login cookie 生成)
├── fan1.json         # 辅助账号 1 cookie(用于帮主账号刷播放量,隔离存储)
├── fan2.json         # 辅助账号 2 cookie(用于接力帮主账号刷播放量,隔离存储)
├── database/         # Badger 数据库存放目录(按账号 UID 隔离数据,无冲突风险)
└── log/
    └── ncm.log       # 运行日志
💡 多账号实战操作示例:
  1. 第一步:创建工作目录并放入配置文件 在本地建立文件夹 run/,并将模板 config.yaml 复制进去,根据需要配置顶级的 accounts 节点,加入主账号和各辅助账号的文件路径。

  2. 第二步:导入/登录主账号 主账号为网易云音乐人账号,登录结果会默认输出至 run/cookie.json

    # 以扫码形式登录主账号
    ncmm --home run login qrcode
    
    # 或使用 Cookie 导入主账号
    ncmm --home run login cookie 'MUSIC_U=xxxx...'
    
  3. 第三步:导入/登录各辅助账号 辅助账号为刷播账号。我们使用 -o 参数分别将 Cookie 输出重定向为 fan1.jsonfan2.json ... (输入文件可以是外部导出的 Cookie 文本,且 -o 使用相对路径时将自适应基于 --home 目录):

    ncmm --home run login cookie -f run/fan1.txt -o fan1.json
    ncmm --home run login cookie -f run/fan2.txt -o fan2.json
    
  4. 第四步:一键运行签到与黑胶进阶任务

    # 执行日常一键签到(会根据 sign 配置自动对主账号及所有辅助账号轮询签到)
    ncmm --home run sign
    
    # 执行黑胶会员进阶任务(会自动读取 accounts.secondary 下的全部辅助账号,为首选主账号接力分摊播放量)
    ncmm --home run musician-vip
    

📝 版本更新记录

📌 v1.1.1
  • ✨ 新增功能
    • 云贝任务全覆盖与精细化控制:补全解耦全部 8 项云贝日常任务,新增独立配置开关,支持单任务启用 / 禁用与延迟时间自定义。
    • 云贝任务集成动态发布:支持自动调用公共 Note 服务完成图文笔记发布与自动秒删。
    • 云贝任务集成日推播放:新增后台播放任务,异步播放每日推荐曲目。
    • 提供独立 ncmm note命令,可单独使用图文发布、秒删功能,支持多账号共用。
  • 💫 体验优化
    • 重构小众歌曲探索任务:随机模拟听歌时长,交替完成凭证申请与打卡上报;强化流程日志,实时展示歌曲、播放时长等状态。
    • 业务机制全面优化:前置任务状态校验,自动跳过已完成项;互动任务新增随机延迟取消逻辑。
📌 v1.1.0
  • ✨ 新增功能
    • 上线音乐人多账号任务套件:新增 ncmm sign 命令,支持主 / 辅助账号自动轮询,批量完成多端签到与任务领取,涵盖音乐人签到、云豆 / 云贝签到、黑胶 VIP 乐签等场景。
    • 云贝任务全自动打卡:支持自动浏览会员中心、评论点赞 / 取消点赞、关注歌手、每日推荐红心、歌曲收藏 / 取消收藏等多项操作。
    • 音乐人黑胶会员进阶任务:新增 ncmm musician-vip 命令,支持任务进度检测、辅助账号接力刷播放量、自动发布图文笔记。
    • 多辅助账号播放额度接力:主账号播放额度不足时,由辅助账号池分摊任务;单账号达到每日上限后,任务自动流转至下一账号。
    • 新增混听风控过滤机制:自动混入辅助账号推荐曲目打乱播放规律,并拦截歌手本人作品,防范违规自刷行为。
    • 多终端独立 UA 配置:支持为不同终端单独自定义请求标识,移除代码内固定配置。
    • 音乐人身份本地缓存:配置缓存身份信息,拦截非音乐人账号的无效请求。
  • 💫 体验优化
    • 日志体系优化:清理冗余底层日志,重新划分日志分类,提升内容可读性。
  • 🐞 Bug 修复
    • 修复特定场景下音乐人签到、黑胶乐签接口调用失败问题,完善签到状态判断逻辑。
    • 修复登录态过期后,Cookie 更新与保存的边缘异常问题。
📌 v1.0.0
  • ✨ 新增功能
    • 完成项目基础架构搭建:基于 Go 语言落地核心框架,搭建模块化目录结构。
    • 支持多方式账号登录:包含扫码登录、手机号密码 / 短信验证码登录、批量导入 Cookie、CookieCloud 自动同步。
    • 实现歌曲模拟播放能力:通过 playids 命令解析流媒体地址、模拟播放并上报听歌数据,支持自定义随机等待间隔。
    • 播放限额与进度存储:集成本地嵌入式数据库,可设置每日播放下限,运行达标后自动停止,规避平台风控。
    • 全局自定义 UA 配置:支持在配置文件统一设置请求标识,提升请求隐蔽性。
  • 💫 体验优化
    • 新增 CDN 音频缓存:首次播放从 CDN 加载音频流,同次运行内重复播放读取跳过下载,减少带宽消耗。
    • 优化播放休眠逻辑:细化进度展示与静默等待的计算规则,运行表现更自然。

⚠️ 免责声明

本项目仅供学术研究和 Golang 学习探讨之用,请勿用于任何商业用途或违反网易云音乐服务条款的行为。对于使用本项目带来的任何账号封禁、数据丢失等不良后果,由使用者自行承担,本项目不提供任何连带保证。

🎖️ 鸣谢

项目 说明
chaunsin/netease-cloud-music 网易云音乐 API
crossgg/netease-cloud-music 网易云音乐人任务

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
api
internal
pkg
cookie
Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
log
ncm

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL