CentOS7 下用 Docker 部署 UnblockNeteaseMusic 并在 Clash 中配置分流以在局域网内解锁网易云音乐变灰的歌曲

之前也是部署过这个项目的,但是后来嫌 PC 端和手机端的网易云音乐都要手动配置有点麻烦,于是就放弃了。
现在在路由器上安装了 Clash,想到既然它能做指定域名的分流,那么应该也能指定网易云的流量走解锁用的服务器来达到灰歌解锁的功能吧(最后发现:只有在 Clash 为网关的情况下才可以实现无需任何多余配置的全客户端灰歌解锁,普通模式仍需配置 Clash 为 HTTP 代理),尝试一下!


1、服务器端的安装
参考官方文档:UnblockNeteaseMusic,执行执行即可:

docker run --name unblock-netease-music --restart=always -d -p 18080:8080 nondanee/unblockneteasemusic -o kugou kuwo xiami migu

如果需要加代理认证功能可以使用如下命令:

docker run --name unblock-netease-music --restart=always -d -p 18080:8080 nondanee/unblockneteasemusic -o kugou kuwo xiami migu -t $your_username:$your_password

需要注意:Windows 端和 macOS 端认证功能无法生效,虽然能测试通过,但是无法播放歌曲且会报连接错误!如果要在这两个端使用,你必须使用 GOST 或 Clash 等工具将需要认证的代理转换为本地不需要认证的代理。

之后记得防火墙和安全组都开放指定端口。

2、测试解锁是否生效
PC 端的网易云代理设置方法如下:
PC 端的网易云代理设置
填入你的代理后点击测试:
显示可用
显示该代理可用,再来看看灰歌的解锁情况。
这是配置前的截图:
配置前
配置后
配置后
成功!

3、在路由器的 Clash 插件上进行配置
既然是在路由器上配置,那么该局域网内所有设备的网易云音乐都会自动解锁灰歌(需要 Clash 在网关模式下才能实现),比起在每个设备上都配置一遍代理来的方便的多。
代码片段:

proxies:
  # 无需认证
  - {name: 网易云音乐灰歌解锁节点, type: http, server: 63.225.10.10, port: 18080 }
  # 需要认证
  # - {name: 网易云音乐灰歌解锁节点, type: http, server: 63.225.10.10, port: 18080, username: your_username, password: your_password }

proxy-groups:
  - name: 网易云音乐
    type: select
    proxies:
      - 网易云音乐灰歌解锁节点
      # 多配置个直连以防不测
      - DIRECT

rules:
  # 网易云音乐域名和 IP 段
  # UWP 版只使用以下两个即可
  - DOMAIN-SUFFIX,music.163.com,网易云音乐
  - DOMAIN-SUFFIX,music.126.net,网易云音乐
  # 为保险添加以下所有域名和 IP 段
  - DOMAIN-SUFFIX,163yun.com,网易云音乐
  - DOMAIN-SUFFIX,api.iplay.163.com,网易云音乐
  - DOMAIN-SUFFIX,apm.music.163.com,网易云音乐
  - DOMAIN-SUFFIX,apm3.music.163.com,网易云音乐
  - DOMAIN-SUFFIX,interface.music.163.com,网易云音乐
  - DOMAIN-SUFFIX,interface3.music.163.com,网易云音乐
  - DOMAIN-SUFFIX,mam.netease.com,网易云音乐
  - DOMAIN-SUFFIX,hz.netease.com,网易云音乐
  - IP-CIDR,39.105.63.80/32,网易云音乐
  - IP-CIDR,45.254.48.1/32,网易云音乐
  - IP-CIDR,47.100.127.239/32,网易云音乐
  - IP-CIDR,59.111.21.14/31,网易云音乐
  - IP-CIDR,59.111.179.214/32,网易云音乐
  - IP-CIDR,59.111.181.38/32,网易云音乐
  - IP-CIDR,59.111.181.60/32,网易云音乐
  - IP-CIDR,59.111.160.195/32,网易云音乐
  - IP-CIDR,59.111.160.197/32,网易云音乐
  - IP-CIDR,59.111.181.35/32,网易云音乐
  - IP-CIDR,59.111.238.29/32,网易云音乐
  - IP-CIDR,101.71.154.241/32,网易云音乐
  - IP-CIDR,103.126.92.132/32,网易云音乐
  - IP-CIDR,103.126.92.133/32,网易云音乐
  - IP-CIDR,112.13.119.17/32,网易云音乐
  - IP-CIDR,112.13.122.1/32,网易云音乐
  - IP-CIDR,115.236.118.33/32,网易云音乐
  - IP-CIDR,115.236.121.1/32,网易云音乐
  - IP-CIDR,118.24.63.156/32,网易云音乐
  - IP-CIDR,193.112.159.225/32,网易云音乐
  - IP-CIDR,223.252.199.66/32,网易云音乐
  - IP-CIDR,223.252.199.67/32,网易云音乐

抓包步骤可以参考这篇文章:Fiddler 学习(一)安装、配置和尝试抓取 UWP 版网易云音乐的请求域名

后话(在我发现路由器端的 Clash 插件并没有那么万能的情况下做的补充):如果你已经将 Clash 设置为网关,实现了透明代理的话,那么 Windows 和安卓端都不再需要配置代理了,直接使用即可:
PC 端
但如果你和我一样只是在路由器上安装了 Clash,并没有实现透明代理,那么你仍需要将网易云音乐的代理手动指向路由器上 Clash:
Clash 地址和端口
网易云配置 Clash 的 HTTP 端口

错误排查用:
① Clash 日志中可以看到网易云音乐流量的走向,如果发现明明在网易云音乐客户端进行了操作,Clash 却没捕捉到流量,说明你 Clash 并非透明代理模式。你需要将路由器上的 Clash 设置为允许局域网内设备访问,并手动在网易云音乐中配置其 HTTP 端口,就和我上面演示的一样。
Clash 流量日志
② 歌曲是否成功解锁了?你可以通过在服务器上执行以下命令,查看 Docker 容器内的日志来确定:

docker logs unblock-netease-music

日志

结束。