nondanee / UnblockNeteaseMusic

Revive unavailable songs for Netease Cloud Music
MIT License
17.42k stars 2.51k forks source link

Quantumult 应该如何配置呢? #72

Closed palfans closed 5 years ago

palfans commented 5 years ago

在 iOS 上尝试设置 Quantumult,看起来规则应该和 Surge 类似,但实际是发到服务器的请求都没有回应,Log 显示是 Tunnel > music.163.com。弄了一晚上,还是不清楚整个流程。 Windows 和 Android 都能顺利显示和播放灰掉的周杰伦了。

nondanee commented 5 years ago

log 显示这个说明已经开了 https 端口啊 那么证书有没有安装呢? 请说一下你的配置流程

palfans commented 5 years ago

@nondanee 谢谢回复,我今天做了一堆测试,分别作了记录,但是无法重现 TUNNEL 这个日志了,很奇怪。

palfans commented 5 years ago

Docker 设置

修改 docker-compose.yml

version: '3'

services:
  unblockneteasemusic:
    image: palfans/unblock-netease-music
    container_name: "163music"
    restart: "always"
    command: "-e https://proxy.xxx.com -p 8080:8083 -s"
    environment:
      NODE_ENV: production
    ports:
      - 8880:8080
      - 8883:8083

说明

启动

$ sudo docker-compose up -d
Recreating 163music ... done

检查启动日志

$ sudo docker logs -f 163music          
HTTP Server running @ http://0.0.0.0:8080
HTTPS Server running @ https://0.0.0.0:8083

HTTP 服务设置

主机已经使用 Caddy 启动 HTTP 服务,增加相关站点配置

设置音源转发域名

# 音源转发域名
proxy.xxx.com {
    tls abcdefg@gmail.com
    gzip
    timeouts none
    proxy / http://<HOST-IP>:8880 {
        transparent
    }
}

# Host 模式,主机的默认 80 端口被占用
# 监听 163 域名的 80 端口,转发至 Unblock 端口
music.163.com:80 {
    gzip
    timeouts none
    proxy / http://<HOST-IP>:8880 {
        transparent
    }
}

# Host 模式,主机的默认 80 端口被占用
# 监听 163 域名的 80 端口,转发至 Unblock 端口
interface.music.163.com:80 {
    gzip
    timeouts none
    proxy / http://<HOST-IP>:8880 {
        transparent
    }
}

iOS 设置

Quantumule (Version 2.2.10 Build 611)

尝试一,设置 HTTP 代理 HOST-IP:8880

[SERVER]
163music = http, upstream-proxy-address=<HOST-IP>, upstream-proxy-port=8880, upstream-proxy-auth=false, over-tls=false, certificate=0

[TCP]
HOST-SUFFIX,163.com,163music
HOST-SUFFIX,126.net,163music
USER-AGENT,NeteaseMusic*,163music
FINAL,DIRECT

[GLOBAL]
SELECTED,163music

# 其他配置为空,此处忽略 ......

Caddy 输出

无输出

Unblock 输出

无输出

云音乐 APP

网络连接失败

Quantumule Request Log

所有分流至代理服务器的请求,都没有收到响应。

POST /receiver HTTP/1.1
Host: mr.da.netease.com
Accept: */*
SDK-Ver: 1.4
Content-Encoding: gzip
x-upload-time: 1557108314
Hashed-APPKEY: c838aff9512db60d88...
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
Content-Type: application/x-gzip
Content-Length: 1472
User-Agent: NeteaseMusicIpad/262 CFNetwork/978.0.7 Darwin/18.5.0
Connection: keep-alive

尝试二,设置 HTTPS 代理 HOST-IP:8883,不验证证书

[SERVER]
163music = http, upstream-proxy-address=<HOST-IP>, upstream-proxy-port=8883, upstream-proxy-auth=false, over-tls=true, certificate=0

[TCP]
HOST-SUFFIX,163.com,163music
HOST-SUFFIX,126.net,163music
USER-AGENT,NeteaseMusic*,163music
FINAL,DIRECT

[GLOBAL]
SELECTED,163music

# 其他配置为空,此处忽略 ......

Caddy 输出

无输出

Unblock 输出

无输出

云音乐 APP

网络连接失败

Quantumule Request Log

所有分流至代理服务器的请求,都没有收到响应。

POST /api/log/mam/upload?MUSIC_A=1a01d4cbf3558eff77edf6bb12cda76500c15be3f4150adab43bf0750d7a6761baa578007210b6f61ad169863095155564c4d... HTTP/1.1
Host: music.163.com
Content-Type: multipart/form-data; charset=utf-8; boundary=0xKhTmLbOuNdArY...
Cookie: MUSIC_A=1a01d4cbf3558eff77edf6bb12cda76500c15be3f4150adab43bf0750d7a6761baa578007210b6f61ad169863095155564c4d...; os=iPad; osver=12.2; appver=1.6.2; deviceId=96a84f...
User-Agent: NeteaseMusic 1.6.2/262 (iPad; iOS 12.2; zh-Hans_US)
Content-Length: 2033
Accept-Encoding: gzip
Connection: close

尝试三,设置 HTTPS 代理 HOST-IP:8883,验证证书

遇到一个奇怪的问题。

能安装描述文件 image

但在通用->证书信任设置看不到安装的 CA 证书,不能设置信任。 image

[SERVER]
163music = http, upstream-proxy-address=<HOST-IP>, upstream-proxy-port=8883, upstream-proxy-auth=false, over-tls=true, certificate=1

[TCP]
HOST-SUFFIX,163.com,163music
HOST-SUFFIX,126.net,163music
USER-AGENT,NeteaseMusic*,163music
FINAL,DIRECT

[GLOBAL]
SELECTED,163music

# 其他配置为空,此处忽略 ......

Caddy 输出

无输出

Unblock 输出

无输出

云音乐 APP

网络连接失败

Quantumule Request Log

所有分流至代理服务器的请求,都没有收到响应。

POST /api/log/mam/upload?MUSIC_A=1a01d4cbf3558eff77edf6bb12cda76500c15be3f4150adab43bf0750d7a6761baa578007210b6f61ad169863095155564c4d... HTTP/1.1
Host: music.163.com
Content-Type: multipart/form-data; charset=utf-8; boundary=0xKhTmLbOuNdArY...
Cookie: MUSIC_A=1a01d4cbf3558eff77edf6bb12cda76500c15be3f4150adab43bf0750d7a6761baa578007210b6f61ad169863095155564c4d...; os=iPad; osver=12.2; appver=1.6.2; deviceId=96a84f...
User-Agent: NeteaseMusic 1.6.2/262 (iPad; iOS 12.2; zh-Hans_US)
Content-Length: 2033
Accept-Encoding: gzip
Connection: close

WiFi 手动代理 HOST-IP:8880

能够正常播放灰色歌曲,但其他应用无法连接互联网。

Unblock 输出

MITM > music.163.com
MITM > p2.music.126.net
MITM > p2.music.126.net
MITM > music.163.com
MITM > music.163.com

云音乐 APP

解锁成功

WiFi 自动代理 http://HOST-IP:8880/proxy.pac

能够正常播放灰色歌曲,其他应用可以连接互联网。

Unblock 输出

MITM > music.163.com
[186116] 爸我回来了
http://p1.music.126.net/0GqLNZmsOqEYChr-slKlug==/3312828534553016
MITM > p1.music.126.net
MITM > music.163.com
[186119] 简单爱
http://p1.music.126.net/xhjDmCdgzC412PcVNXcYOg==/7931876884311900

云音乐 APP

解锁成功
palfans commented 5 years ago

PAC 只能在 WiFi 才生效,用流量时,痛点没有解决。目前 iOS 上只购买了 Quantumult,想不通哪里出了问题。

nondanee commented 5 years ago

@palfans 发现一个误区,其实 https 端口 8883 不应该被用于代理,(是我用来做内部转发用的) 代理都填 http 代理用 8880 就行了

所以 尝试二,设置 HTTPS 代理 HOST-IP:8883,不验证证书 尝试三,设置 HTTPS 代理 HOST-IP:8883,验证证书 都没太大意义

尝试四,WiFi 手动代理 HOST-IP:8880 其它 APP 都断网的原因是你加了 -s

尝试五,WiFi 自动代理 http://HOST-IP:8880/proxy.pac 在尝试三安装证书后,这里的 log 有 TUNNEL > localhost:8083 这个吗?

我感觉尝试一是正确的 在尝试三安装证书以后,建议重新试试尝试一 你可以先不开 -s,Quantumule 里也不要写 TCP 规则,试试看 unblock 这边有没有 log 现阶段是 Quantumule 配置代理的问题,和 caddy 还没有关系,可以先不看那边

palfans commented 5 years ago

确实是 -s 的锅。我发现打开严格模式后,在 filter 里边所有的请求都被拒绝了。因为由 TUNNEL 转发时,URL是 localhost,不匹配白名单,同时黑名单默认为 ['.*'],逻辑比较难理解。修改后,问题解决。

nondanee commented 5 years ago

好的,在 PR 那边交流吧

hgao36 commented 4 years ago

我想请问一下有没有具体的设置教程,我在IOS购买了QuantumultX。但是不太清楚如何设置。有人能发一下详细的设置流程吗