〇、前言

公司的网络屏蔽了QQ音乐流媒体,导致打开QQ音乐经常出现问题。

不是登录不上就是推荐页打不开,虽然歌能继续听,但是没法看到一些推荐或专辑,就很膈应。

于是想通过全局代理的方式逃脱屏蔽,但是外网访问QQ音乐,可能会存在一些问题,比如IP屏蔽,加载过慢等问题。

所以想到了在服务器上搭建一个代理,然后将QQ音乐设置成服务器的代理,从而实现突破屏蔽的效果

一、安装代理

以阿里云的轻量型服务器 CentOS 为例,使用以下命令安装 TinyProxy

sudo yum install tinyproxy

安装成功后,使用以下命令打开其配置文件:

sudo vim /etc/tinyproxy/tinyproxy.conf

配置文件可关注以下几点:

  • Port :代理开启的端口。默认为8888。

  • Allow/Deny :白名单和黑名单。如果不填则默认允许全部。

  • XTinyproxy :是 TinyProxy 添加的自定义头,内容是客户端的 IP 信息。关闭。

  • DisableViaHeaderVia 头在 HTTP 请求和响应中用于指示该请求或响应经过了哪些代理服务器。开启则可以隐藏代理服务器的信息。

QQ 音乐 PC 版在某些网络环境下可能会遇到无法播放网络歌曲的问题。虽然可以正常登录和查看每日推荐歌曲、评论,但每当尝试播放时,系统总是提示“正在连接到歌曲”或“当前网络不佳”。经确认,问题是由校园网屏蔽了 QQ 音乐的流媒体链接引起的。为了解决这个问题,本文介绍了通过搭建 HTTP 代理来绕过网络限制的方法。

问题的根源

校园网络屏蔽了 QQ 音乐的流媒体链接,导致无法正常播放歌曲。通过 HTTP 代理,可以绕过这一限制。由于 QQ 音乐屏蔽了国外 IP 地址,因此,传统的 VPN 方案无法解决问题。而搭建国内的 HTTP 代理服务,则成为了一种可行的解决方案。

选择服务器和代理软件

选择了一台阿里云轻量服务器,操作系统为 Ubuntu 20.04,使用了 Tinyproxy 作为 HTTP 代理软件。Tinyproxy 是一款轻量级的 HTTP 代理软件,适合用来搭建代理服务。

Tinyproxy 安装与配置

  1. 安装 Tinyproxy

    通过 SSH 连接到阿里云服务器,使用以下命令安装 Tinyproxy:

    sudo apt-get install tinyproxy
    

    如果安装后服务启动失败,并报错 tinyproxy.service: Can't open PID file /run/tinyproxy/tinyproxy.pid (yet?) after start: Operation not permitted,可能是端口被占用。Tinyproxy 默认监听端口 8888,因此需要检查该端口是否被其他服务占用。如果发生端口冲突,可以修改配置文件来调整端口。

  2. 修改配置文件

    使用以下命令打开 Tinyproxy 的配置文件:

    sudo vim /etc/tinyproxy/tinyproxy.conf
    
    • 修改端口:可以将默认端口 8888 修改为其他端口,或保留默认设置。

    • 修改允许的 IP 地址:Tinyproxy 默认限制只有指定的 IP 地址能够访问代理服务。如果 IP 地址变化频繁,可以注释掉此项,允许所有 IP 连接。

    • 隐藏 IP 信息:为了增强匿名性,关闭了 HideForwardedFor 选项,避免代理暴露真实 IP 地址。

    • 隐藏 VIA 头信息:开启 HideVia 选项,避免通过 VIA 头信息泄露代理链信息,防止 QQ 音乐识别出真实 IP 地址。

    配置完毕后,保存并退出编辑器。

  3. 启动服务

    修改完配置后,使用以下命令启动或重启 Tinyproxy 服务:

    sudo systemctl start tinyproxy
    

    若需要重启服务:

    sudo systemctl restart tinyproxy
    

    确保在服务器上开放相应端口(默认是 8888,或修改后的端口):

    sudo ufw allow 8888
    

    另外,别忘了在阿里云控制台上也开放相应的端口。

  4. 配置 QQ 音乐使用 HTTP 代理

    在 QQ 音乐客户端的设置中,找到代理设置选项,输入服务器的 IP 地址和端口号,保存并测试是否能成功连接。

集成 Clash 代理配置

如果希望通过 Clash 等代理软件进行更精细的流量控制,可以将 tinyproxy 的代理地址添加到 Clash 配置文件中,指定部分网站走 tinyproxy 代理。以下是具体步骤:

  1. 添加 Proxy

    在 Clash 配置文件中的 proxies 部分,添加 tinyproxy 的代理设置。假设 tinyproxy 监听的是 127.0.0.1:8888,配置如下:

    proxies:
      - name: "TinyProxy"
        type: http
        server: 127.0.0.1
        port: 8888
        skip-cert-verify: false
    
    • name:代理的名称,可以自定义。

    • type:代理类型,通常是 http

    • servertinyproxy 的代理地址。

    • porttinyproxy 监听的端口。

    • skip-cert-verify:如果不想验证证书,可以设置为 true,否则保持为 false

  2. 设置规则 (Rules)

    rules 部分,添加匹配想要通过 tinyproxy 代理的网站。例如:

    rules:
      - DOMAIN-SUFFIX,example.com,TinyProxy
      - DOMAIN-SUFFIX,anotherdomain.com,TinyProxy
      - MATCH,Proxy
    
    • DOMAIN-SUFFIX:匹配以某个域名结尾的所有请求。

    • MATCH:匹配未指定规则的流量,通常用于设置默认代理。

  3. 重启 Clash

    修改配置文件后,保存并重启 Clash,新的代理规则和设置就会生效。

遇到的其他问题

在安装 Tinyproxy 的过程中,遇到了一些与 yum 相关的错误,导致安装过程卡住。通过重建 rpm 数据库解决了该问题:

sudo rm -f /var/lib/rpm/__db*
sudo rpm --rebuilddb

这两个命令修复了 yum 的数据库问题,使得安装得以继续进行。

总结

通过搭建 HTTP 代理,可以绕过学校网络对 QQ 音乐流媒体链接的屏蔽,恢复正常的音乐播放体验。如果希望通过代理软件更精细地管理流量,可以将 tinyproxy 集成到 Clash 等代理工具中,通过配置规则让特定网站通过 tinyproxy 代理。通过这种方式,可以解决无法播放 QQ 音乐的问题,并提高网络隐私性和安全性。

[设置http代理解决qq音乐pc版无法播放问题](https://blog.csdn.net/qq_37263248/article/details/123997584)

[解决yum安装卡在Running transaction test卡很久](https://www.isres.com/jingyan2/92.html)

[Tinyproxy](https://tinyproxy.github.io/)