解锁网易云灰色歌曲

最近发现自己的博客打开时网页icon总是显示在加载中的圈圈,我明明换了8M带宽的服务器还加载那么慢,之后打开控制台network发现有几张图片一直请求加载不成功,原来是这几张图片拖慢了我的网站,检查发现这几张图片是使用了gavatar服务提供的,gavatar在国内是被墙了的,之后我给这几张图片换了一个镜像源就好了,现在我的网站终于是秒加载了,再也看不到那个一直转的圈圈了。好了废话,我在解决上面那个问题时,发现了一个博主介绍了如何解锁网易云灰色歌曲的教程,然后就想自己弄一下,顺便熟悉下linux

背景

刚好最近促销换了一台配置较好的腾讯云linux centos服务器,所以就想使用这个服务器来启一些服务玩玩。

开始

首先这个需要一个大佬提供的代理服务程序。github地址。更详细的信息可以去github查看,接下来我直接说明如何在linux使用搭建这个服务了。

安装node

首先需要安装node,可以到官网去获取最新的安装包及源码地址,这里我选择的是Linux Binaries (x64)

# 下载
wget https://nodejs.org/dist/v16.13.1/node-v16.13.1-linux-x64.tar.xz
# 解压
tar xf node-v16.13.1-linux-x64.tar.xz
# 进入解压目录
cd node-v16.13.1-linux-x64      

配置node的环境变量

# 修改这个文件可以事先备份下,养成好习惯
vim /etc/profile
# 这里的目录填写你解压node的bin目录,不一定和我一样
export PATH=$PATH:/root/node-v16.13.1-linux-x64/bin
# 使环境变量生效
source /etc/profile
# 测试node时候安装成功,查看版本号
node -v

在上述配置环境变量的时候我发现了一个问题,在每次关闭终端再连接的时候就无法使用node这个命令,我猜想是环境变量未生效,所以我又执行了一次这个命令:

source /etc/profile

结果是可以使用node命令了,但每次启动终端都要执行一次这个命令未必有点麻烦,这里我把这条命令加到一个文件中,使得每次连接打开终端就执行这个命令。

# 编辑下面这个文件
vim /root/.bashrc

在文件最后添加你需要执行的命令,这里你也可以添加加其他需要打开终端就执行的命令(图片中的注释写错了这个不是开启启动的命令,是连接终端执行的命令):
image-20211213003448158

安装git

这里我想通过git clone方式下载程序,当然你也可以通过其他方式:

这里是我参照的安装方式--网址

这里可以选择安装git版本的链接

# 安装,这里我们下载的源码
wget https://github.com/git/git/archive/refs/tags/v2.34.1.tar.gz
# 解压
tar -zxvf v2.34.1.tar.gz
# 下载安装编译源码所需依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
# 进入解压目录
cd git-2.34.1
# 执行编译,这一步可能耗时比较久
make prefix=/usr/local/git all
# 安装git到指定目录(这里选择的是/usr/local/git),可以按需自行修改
make prefix=/usr/local/git install
# 配置环境变量
vim /etc/profile
# 最后一行加上
export PATH=$PATH:/usr/local/git/bin
# 最后保存退出,执行校验命令查看版本
git --version
# 如果找不到命令就执行命令
source /etc/profile
# 最后再测试即可

安装服务程序

# 克隆代码
git clone https://github.com/nondanee/UnblockNeteaseMusic.git
# 进入目录
cd UnblockNeteaseMusic
# 执行入口文件
node app.js

运行端口默认为8080,我们可以通过在命令后加参数修改这个端口

# 在22333端口运行这个服务
node app.js -p 22333

当然我们要一直使用这个服务就需要这个服务一直开启,当我们关闭终端就会导致这个服务停止,所以我们需要进程守护。

这里我是用的pm2来守护这个服务进程:
安装pm2

npm install pm2 -g

pm2一些使用命令

# 命名进程
pm2 start app.js --name my-api
# 显示所有进程状态
pm2 list 
# 停⽌指定的进程
pm2 stop 0 
# 停⽌所有进程
pm2 stop all 
# 重启所有进程
pm2 restart all 
# 重启指定的进程
pm2 restart 0 
# 杀死指定的进程
pm2 delete 0 
# 杀死全部进程
pm2 delete all 
#后台运⾏pm2,启动4个app.js,实现负载均衡
pm2 start app.js -i 4

#另外,说明一下
npm run dev
pm2 start npm -- run dev
#上面这两个命令用法一样

我们要使用pm2来执行命令node app.js -p 22333的命令组合(加上了一些额外参数)如下:

首先为了方便在服务程序的package.json 中新增一个脚本命令(server):

  "scripts": {
    "pkg": "pkg . --out-path=dist/",
    "server":"node app.js -p 22333"
  },

之后注意cd到服务程序的根目录,我们就可以通过执行以下的命令来启动程序了:

pm2 start npm --watch --name wyy-proxy -- run server

启动后查看状态:

pm2 list

也可以查看端口状态:

## 补充两个命令
## 查看端口服务程序运行情况
netstat -anp |grep 22333
# 可以根据进程号(pid)来杀死进程,注意这个方式貌似杀不了pm2开启的服务
kill -9 <pid>

完成后我还想开机自启动这个服务程序,所以接下来配置开机启动服务:

这里涉及到systemctl相关知识,可以自行扩充,我只讲简单的实现命令

新建服务

## 一般在这个目录下创建
cd /lib/systemd/system
## 创建编辑服务文件
vim start_run.service

编辑服务文件

# 配置文件内容
[Unit]                                          
Description=wyy-proxy
 
[Service] 
Type=forking 
# 服务启动执行sh文件的目录
ExecStart=/usr/local/sbin/wyy-proxy.sh
# 服务重启执行sh文件的目录
ExecReload=/usr/local/sbin/wyy-proxy.sh
PrivateTmp=true 
 
[Install] 
WantedBy=multi-user.target

创建sh文件

上面服务文件中的sh文件我们还需要创建:

vim /usr/local/sbin/wyy-proxy.sh

编辑sh文件

填入如下信息:

#!/bin/bash
# 第一行的#!/bin/bash记得要加上,否则之后可能会报错 exec format error 
## 注意这个导入export这行环境变量代码(可通过命令 echo $PATH 来查询获取)是为了解决之后运行程序时报错 xxx:command not found
export PATH=/usr/local/lighthouse/softwares/mariadb/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/lighthouse/softwares/node-v16.13.1-linux-x64/bin:/usr/local/git/bin:/root/bin

cd /usr/local/wyy-music-proxy/UnblockNeteaseMusic-master
pm2 start npm --watch --name wyy-proxy -- run server

然后保存退出,给sh文件设置权限:

chmod u+x /usr/local/sbin/wyy-proxy.sh

最后设置开机启动服务

# 设置开机启动
systemctl enable start_run  
# 启动服务
systemctl start start_run
# 查看启动状态
systemctl status start_run

使用

修改hosts文件,linuxhost文件修改如下:

vim /etc/hosts

最后添加两行:

#将前面参数修改为服务器IP(自行根据下面的域名ping)
<Server IP> music.163.com
<Server IP> interface.music.163.com

保存退出。

这里我只成功配置了windows端网易云:
打开 网易云客户端设置 > 工具 > 自定义代理 > HTTP代理
按照如下配置:

image-20211213012607836

测试确定重启客户端。

注意,你的服务器如果有防火墙记得要提前放行服务程序所运行的端口号哈。

之后就可以快乐听歌了~~

image-20211213012758484

另外关于手机端的解锁,这里我照着这个方法目前不能实现,但这里可以参照这篇文章

Last modification:April 8, 2022
如果觉得我的文章对你有用,请随意赞赏