网易云歌单里需要 VIP 才能听的音乐越来越多,颇有「宰老客」的嫌疑,干脆自己整活。

本文仅作为技术认证与记录。

食材

架构

目前是在家用 NAS 上搭建 UnblockNeteaseMusic 服务端,在家庭 Wi-Fi 范围内用 Clash 转发网易云音乐的请求到服务端。

步骤

  1. SubConvertor 的搭建过程省略,随便架在 Heroku 上面就行。(下文假设 SubConvertor 的地址为 https://sc.jonb/

  2. 在 NAS - Docker 里面下载并启动 nondanee/unblockneteasemusic,容器内 8080 端口转发到外部 8080 端口,不妨记 NAS 位于 http://nas.jonb

  3. 参考附录创建 netease.ymlsc.ini,托管在公网。不妨记分别托管在 https://cdn.jonb/netease.ymlhttps://cdn.jonb/sc.ini

  4. 添加 Clash 订阅

    1. 订阅地址在 URLEncode 前为:
    1
    https://sc.jonb/sub?target=clash&url=https://cdn.jonb/netease.yml&config=https://cdn.jonb/sc.ini
    1. 对 target 后面的每一个 URL 分别执行 URLEncode:
    1
    https://sc.jonb/sub?target=clash&url=https%3a%2f%2fcdn.jonb%2fnetease.yml&config=https%3a%2f%2fcdn.jonb%2fsc.ini
    1. 把第三步得到的 URL 添加进 Clash 订阅
  5. Clash - Proxies - 音乐解锁 里面选择 网易云解锁:NAS

  6. 网易云音乐 Windows 客户端可能需要调一下代理设置。

附录

下面是一些比较长的文件。

netease.yml

其实前面都是废话,记得改掉 nas.jonb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# port of HTTP
port: 7890
# port of SOCKS5
socks-port: 7891
allow-lan: false
# rule / global / direct (default is rule)
mode: rule
# set log level to stdout (default is info)
# info / warning / error / debug / silent
log-level: info

proxies:
- name: "网易云解锁:NAS"
type: http
server: nas.jonb
port: 8080
# username: username
# password: password
# tls: true # https
# skip-cert-verify: true

sc.ini

直接用,不需要修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
;不要随意改变关键字,否则会导致出错

;设置规则标志位
surge_ruleset=DIRECT,rules/LocalAreaNetwork.list
surge_ruleset=DIRECT,rules/ConnersHua/Surge/Ruleset/Unbreak.list
surge_ruleset=🎵 音乐解锁, rules/ACL4SSR/Clash/Ruleset/NetEaseMusic.list
surge_ruleset=🛑 全球拦截,rules/NobyDa/Surge/AdRule.list
surge_ruleset=🛑 全球拦截,rules/ConnersHua/Surge/Ruleset/Hijacking.list
surge_ruleset=📹 YouTube,rules/ConnersHua/Surge/Ruleset/Media/YouTube.list
surge_ruleset=🎥 NETFLIX,rules/ConnersHua/Surge/Ruleset/Media/Netflix.list
surge_ruleset=📺 巴哈姆特,rules/ConnersHua/Surge/Ruleset/Media/Bahamut.list
surge_ruleset=🌍 国外媒体,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/GlobalMedia.list
surge_ruleset=🌏 国内媒体,rules/lhie1/Surge3/Domestic.list
surge_ruleset=📲 电报吹水,rules/ConnersHua/Surge/Ruleset/Telegram.list
surge_ruleset=🔰 节点选择,rules/ConnersHua/Surge/Ruleset/Global.list
surge_ruleset=🍎 苹果服务,rules/ConnersHua/Surge/Ruleset/Apple.list
surge_ruleset=DIRECT,rules/ConnersHua/Surge/Ruleset/China.list
surge_ruleset=DIRECT,rules/NobyDa/Surge/Download.list
surge_ruleset=DIRECT,[]GEOIP,CN
surge_ruleset=🐟 漏网之鱼,[]FINAL
;设置规则标志位

;设置分组标志位
custom_proxy_group=🔰 节点选择`select`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`[]✈ 负载均衡`[]DIRECT
custom_proxy_group=🎵 音乐解锁`select`[]DIRECT`(网易|Netease)
custom_proxy_group=📲 电报吹水`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`(狮城|新)
custom_proxy_group=📹 YouTube`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换
custom_proxy_group=🎥 NETFLIX`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`(NF|解锁)
custom_proxy_group=📺 巴哈姆特`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`(台)
custom_proxy_group=🌍 国外媒体`select`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`[]DIRECT
custom_proxy_group=🌏 国内媒体`select`[]DIRECT`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低
custom_proxy_group=🍎 苹果服务`select`[]DIRECT`[]🔰 节点选择`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换
custom_proxy_group=🛑 全球拦截`select`[]REJECT`[]DIRECT
custom_proxy_group=🐟 漏网之鱼`select`🔰 节点选择`select`[]✈ 手动选择`[]✈ 延迟最低`[]✈ 故障切换`[]DIRECT
custom_proxy_group=✈ 手动选择`select`.*
custom_proxy_group=✈ 延迟最低`url-test`^((?!网易).)*$`http://www.gstatic.com/generate_204`500
custom_proxy_group=✈ 故障切换`fallback`^((?!网易).)*$`http://www.gstatic.com/generate_204`500
custom_proxy_group=✈ 负载均衡`load-balance`^((?!网易).)*$`http://www.gstatic.com/generate_204`500
;设置分组标志位