自建代理访问中国音乐服务

- -

由于版权原因,在外国访问中国音乐服务即使付费会员也可能没法听到音乐。同时,中国音乐服务版权现状复杂,使得音乐版权分布在不同的服务之间,使得用户没办法在一个平台上听到所有喜欢的歌曲,体验很差。本文介绍一个项目的配置来解除一些限制。

工作原理

  • 使用 UnblockNeteaseMusic 建立代理,可以运行在本地或者云端(文本选择 host 在阿里云)
    • 使用云端的好处是对于 iOS 可以设置自动代理,不需要自己设置一台本地机器作为服务器
  • 使用 proxy.pac, proxifier 设置 iOS 以及 Mac 的代理

申请云服务器 VPS

使用腾讯云以及阿里云等都可以。似乎阿里云稍微便宜一点,因为我配置的 VPS 完全就是为了这个而服务,所以我申请的是最低级的一档,并且按照网络流量付费带宽(非固定带宽)。那么一个月大概是 24.1 元 + 流量:

欢迎使用我的购买链接进行注册。也欢迎留言让我知道哪里有更便宜的虚拟主机。

登录 VPS 以及配置 UnblockNeteaseMusic

如何配置 VPS 以及登录这里就略过不谈了,应该在云服务器处都有教程。一般来说登录后要先安装一些必要的软件,比如 git, nodejs 等。

准备就绪后,安装 UnblockNeteaseMusic

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

安装好后,可以按照项目说明运行服务器。我使用的是旧方法:

node app.js -p 8000:8043

其中 : 里面,port1 是提供给客户端的端口,port2 用于内部转发,应该随便一个都可以。

注意默认状态下阿里云的 8000 端口是关闭的,需要在阿里云的安全组里自行设置。这是一个例子:

Bonus:我一般在后台使用 mosh + tmux 对远程机器进行操控,免去每次登录。有兴趣的可以搜索如何配置。经观察,这似乎并不占用带宽并引起流量消费。

配置客户端

iOS

iOS 的客户端类似 shadowrocket 等要钱,最简单的就是设置 proxy.pac 并且把相关服务 IP 重定向到服务器。下面是一个例子:

function FindProxyForURL(t) {
  return shExpMatch(t, "http://*.music.163.com/*")
  || shExpMatch(url, "http://*.126.net/*")
  || shExpMatch(url, "http://ipservice.163.com/*")
      ? "PROXY <VPS IP>:8000"
      : "DIRECT"
}

需要把 设置成你的服务器的公网地址。把这段代码存成 proxy.pac。

你可以把这个文件放在 VPS 上,我选择了把它放在了 dropbox。所以我在 iOS 上填的是类似以下的地址:

https://www.dropbox.com/s/abcdefg/proxy.pac?dl=0

记得要把 dl=0 改成 dl=1,否则会定向到 dropbox 文件的下载页面,而不是文件本身。

Mac Mac 的设置参考了这篇文章。这里使用了 proxifier 这个软件。设置很简单,只需要设置对应的服务器,以及规则即可。

测试

使用网易云音乐,查看一些平时看不到的灰色的歌曲,如果代理设置成功,可以看到服务器的输出,类似如下:

参考文献

[1] https://www.sheyilin.com/2019/06/unblockneteasemusic/

Comments