解锁网易云音乐灰色歌曲

Posted by JenI on 2019-08-16 00:00:00+08:00

前言

国内音乐版权的分散问题一直是音乐爱好者们听歌的痛点,网易云音乐、虾米音乐、腾讯音乐等众多音乐平台,每家手里都握着一部分的歌手版权,但又每家都不全,所以想要听全自己喜欢的歌,电脑手机都要下载N个软件,着实让人头疼。

之前也见有人写过整合这些音源的软件,比如电脑端使用的 Listen 1,手机端的倒带,我也都下载使用过,就我自己的体验而言,音源整合在了一起确实有效解决了版权分散问题,但是软件的功能对比大厂的软件来说,还是显得糙了点,好多功能还有待完善。不过要求不高的同学也可以试试,单就听歌来说,这些聚合软件还是比较方便的。

说正经事。最近逛酷安看到了一个关于网易云音乐版权的帖子,评论区有人提到了一个解锁网易云灰色(无版权)歌曲的开源项目,在 Github 搜了一下,项目名叫 UnblockNeteaseMusic,它是通过中间人攻击的方式,把网易云音乐中没有版权的歌曲链接替换成其他音乐平台的链接,从而以代理的形式解锁灰色歌曲。项目有下面几个特性:

  • 使用 网易云旧链/QQ/虾米/百度/酷狗/酷我/咕咪/JOOX 音源替换变灰歌曲链接 (默认仅启用前四)
  • 为请求增加 X-Real-IP 参数解锁海外限制,支持指定网易云服务器 IP,支持设置上游 HTTP(S) 代理
  • 完整的流量代理功能 (HTTP / HTTPS),可直接作为系统代理 (同时支持 PAC)

作者应该是考虑到国内服务器高价低配的情况,特意增加了解锁海外限制的特性,但是我是不太建议使用海外 VPS 的,因为我国对爬墙头这事封禁的还是挺严格的,我和朋友之前的好几个 SS 代理都被封了 IP,后来换成了 SSR,情况才有所好转,所以基于 HTTP/HTTPS 的海外代理我是不建议的,没两天 IP 被墙了那就有点得不偿失了。国内服务器的话可以考虑走学生身份购买,因为我学生身份认证还没过期,所以就直接买了阿里云的轻量级服务器。年龄不在 12-25 岁之间的同学可以向这个年龄区间的亲戚朋友借用一下身份信息。当然,如果你只在电脑上用客户端听歌的话那就完全不用这么麻烦了,在自己电脑上把项目跑起来,网易云代理一改就可以直接使用了。

本地使用

Windows 通过浏览器下载 nodejs,安装时应该是默认添加了环境变量的。Linux 通过自己的包管理或者自行编译安装 nodejs。

安装完成后在各自的终端里输入:

npx @nondanee/unblockneteasemusic

然后把网易云音乐的代理改为 unblockneteasemusic 代理的地址:

UnblockNeteaseMusic-1.png

点击确定后网易云会重启,之后就可以使用了。

公网使用

就像上边说的,公网使用首先需要有一个公网的服务器,我买了北京地区的阿里云的轻量级服务器,系统使用了默认的 CentOS 7.3,以下为搭建流程:

安装 epel 源:

yum install epel-release

安装 nodejs:

yum install nodejs

验证是否正确安装 nodejs:

node -v

安装 Git:

yum install git

克隆 UnblockNeteaseMusic 仓库:

git clone https://github.com/nondanee/UnblockNeteaseMusic.git

运行 UnblockNeteaseMusic:

cd UnblockNeteaseMusic
node app.js

到这里把客户端 HTTP 代理设置成 服务器IP:8080 就可以使用了,但是这种启动方式容易被滥用,任何人拿到你的 IP 和端口,都可以没有限制的使用你的服务器做代理,所以作者提供了一个 -s 严格模式,也就是仅放行网易云音乐所属域名的请求,不过这样也是有弊端的,这种启动方式仅支持 PAC 或 Hosts,配置起来相对麻烦,而且我几乎下载了所有支持 HTTP 代理的 APP,发现安卓平台下竟然没有一个好用一点的 HTTP 代理软件,高版本安卓上 Postern 代理规则不生效,Drony 配置起来比较复杂,要针对每一个网络都做一次配置,对于手机这种网络经常切换的平台实在是不太方便。最后我是在翻看项目已经 close 的 Issue 时候发现,有人提到过可以将 HTTP 流量转换成 Socks5 流量,从而解决安卓上没有好用的代理软件的问题,这个可以通过开源项目 goproxy 实现,goproxy 提供了 SPS 协议转换功能,刚好用来在 http/https 和 Socks5 协议之间互相转换。

UnblockNeteaseMusic-2.png
UnblockNeteaseMusic-3.png

将上面运行的 UnblockNeteaseMusic 项目停止。安装 goproxy:

Ctrl+C
curl -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh | bash

安装 Screen 工具,用来在后台运行程序,避免关闭终端的同时程序停止

yum install screen

新建一个 screen

screen -S music

在 screen 下运行代理

node app.js &
# 如果使用自签证证书的话使用下面的命令
node app.js -p 8080:443 &

使用 goproxy 将 http/https 流量转为 socks5 流量,并添加 --disable-http 禁用 http 协议

proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p :端口号 -h 加密方式 -j 密码 --disable-http
# 如果使用自签证证书的话使用下面的命令,UnblockNeteaseMusic 项目的仓库里提供了一个证书,信不过作者的话可以使用 openssl 制作自己的证书
proxy sps -S http -T tls -P 127.0.0.1:443 -t tcp -p :端口号 -C server.crt -K server.key -h 加密方式 -j 密码 --disable-http

程序运行成功后,使用 Ctrl+A+D 退出 screen。

配置防火墙,如果买的服务器管理面板支持设置的话可以直接在面板上设置,如果不支持,那就使用系统自带的防火墙,将你设置的端口流量放行。之后再各个平台设置 Socks5 代理就可以了。

效果图

UnblockNeteaseMusic-4.png
UnblockNeteaseMusic-5.png

最后

尊重版权、为音乐付费是对的,毕竟音乐人也要吃饭,但是大厂们如果单纯是为了利益而争夺版权的话,那实在有违把用户放在首位的原则,最终苦的还是我们消费者。

希望有那么一天,可以不用通过技术手段,从一个软件里听到所有歌曲,那真是再好不过了。

参考

https://github.com/nondanee/UnblockNeteaseMusic
https://www.lajiblog.com/index.php/archives/4/
https://github.com/snail007/goproxy


作者:   JenI   转载请注明出处,谢谢


Comments !