iOS 食用指南
u3u opened this issue · 166 comments
项目作者注: 此方案使用公网可信任 https endpoint 解决可以匹配但无法播放的问题
如 README 中描述,解决方法不唯一,具体见 #56 "✳ 配置 https 转发" 部分
前提步骤(小白请点这里,老司机请绕道)
下面的命令按照顺序复制执行即可
安装 Node.js
# 先安装 nvm 方便管理多版本 node
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash
# 然后再安装 node
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node/ nvm install 8.9.0
# 测试
node -v
安装 Yarn [可选]
# 先安装 yvm 方便管理多版本 yarn
curl -s https://raw.githubusercontent.com/tophat/yvm/v2.4.3/scripts/install.sh | INSTALL_VERSION="v3.6.2" bash
# 然后再安装 yarn
yvm install latest
# 测试
yarn -v
安装 PM2 用于部署服务
yarn global add pm2 # 或者使用 npm -g install pm2
克隆并进入项目根目录
git clone https://github.com/nondanee/UnblockNeteaseMusic.git /var/www/UnblockNeteaseMusic && cd /var/www/UnblockNeteaseMusic
修改服务器配置推荐使用 VSCode 配合 Remote Development 扩展使用
方法一:使用证书
安装新的 CA 证书,设备上点击链接应该会自动跳转
https://raw.githubusercontent.com/nondanee/UnblockNeteaseMusic/master/ca.crt
在设置 > 通用 > 关于本机 > 证书信任设置,手动信任证书
官方教程:https://support.apple.com/zh-cn/HT204477
启动服务
测试服务:
# 启动命令改为 node app.js -p port1:port2 (port2 是用来内部转发的 https 端口)
node app.js -s -e https://music.163.com -p 8080:8081
使用 pm2 部署:
pm2 start app.js --name UnblockNeteaseMusic -- -s -e https://music.163.com -p 8080:8081
pm2 常用命令
pm2 stop UnblockNeteaseMusic # 停止服务
pm2 restart UnblockNeteaseMusic # 重启服务
pm2 pull UnblockNeteaseMusic # 更新服务到最新代码
pm2 show UnblockNeteaseMusic # 查看服务的参数信息
pm2 log UnblockNeteaseMusic # 查看服务日志
pm2 ls # 查看已部署的服务列表
pm2 monit # 监控服务状态
pm2 flush # 清理所有日志文件
pm2 update # 更新 pm2 状态
方法二:配置 https endpoint 转发音源
配置 Nginx 转发音源
server {
listen 443;
server_name your_domain; # 改为你自己的域名
ssl on;
ssl_certificate 1_your_domain_bundle.crt; # 改为自己申请得到的 crt 文件的名称
ssl_certificate_key 2_your_domain.key; # 改为自己申请得到的 key 文件的名称
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:8080; # 代理到 Unblock 服务地址
}
}
启动服务
测试服务:
node app.js -s -e https://<转发音源的域名>
使用 pm2 部署:
# 香港服务器需要指定 `-o joox` 参数
pm2 start app.js --name UnblockNeteaseMusic -- -s -e https://<转发音源的域名> -o joox
下载 Shadowrocket 并配置 Unblock 代理
项目作者注: 没有强制要求 Shadowrocket,设置 WLAN 代理也可以
- 右上角加号添加节点
- 类型选择 HTTP
- 服务器填写你的服务器公网 IP
- 端口填写你启动服务的端口号(默认为 8080)
- 然后底部找到配置 点击本地文件 -> default.conf -> 编辑配置
- 添加三条规则 选项选择你刚刚添加的节点
USER-AGENT
:NeteaseMusic*
DOMAIN-SUFFIX
:163.com
DOMAIN-SUFFIX
:126.net
可以在腾讯云申请免费 SSL 证书:https://console.cloud.tencent.com/ssl
常见问题
网络不给力
- 如果你使用证书,请检查证书是否已信任:https://support.apple.com/zh-cn/HT204477
- 如果你使用 https endpoint 转发音源,请检查你的启动参数是否正确(不要指定第二个端口号)
歌曲不存在
- 歌曲不存在应该是资源库里面没有匹配到,你可以尝试换几首热门歌曲测试
@onewayticket255 是这个版本吗?我的可以播放
@onewayticket255 那应该是服务器问题吧 我用的腾讯云
所以ios使用是要一直开着VPN嘛,这样不会比较耗电嘛
@459217974 你可以先把你想听的歌下载到本地 之后就不用开了 需要的时候再开
请问一下 你的iOS网易云客户端版本号
ios 就是刚打开应用的那一会可以用,听了一首歌就不行了,就是按照指南来弄的,电脑很稳定
@onewayticket255 我用的最新版 6.1.1
安卓也有类似的症状:刚打开的一会儿可以用,过一会儿就不行了(不会走代理了)
目前是路由器 dnsmasq 指定解析,设备使用路由器递归 dns。
本地解析 httpdns 的域名有两个 ip 结果,在路由器已屏蔽。
所以我怀疑是不是其有其他 httpdns,或者其他类似机制在客户端内部更新解析。
改日我抓包一下看看
node app.js -e https://your_domain
HTTP Server running @ http://0.0.0.0:8080
MITM > 59.111.160.195
TUNNEL - 59.111.160.195:443
MITM > 59.111.160.195
TUNNEL - 59.111.160.195:443
TUNNEL - 59.111.160.195:443
MITM > 59.111.160.195
MITM > 59.111.160.195
TUNNEL - 59.111.160.195:443
MITM > 59.111.160.195
TUNNEL - 59.111.160.195:443
MITM > 59.111.160.195
TUNNEL - 59.111.160.195:443
MITM > 59.111.160.195
TUNNEL - 59.111.160.195:443
MITM > 59.111.160.195
TUNNEL - 59.111.160.195:443
MITM > 59.111.160.195
TUNNEL - 59.111.160.195:443
一直这样循环....
server {
listen 443;
server_name your_domain;
ssl on;
ssl_certificate /usr/local/nginx/conf/ssl/1_your_domain_bundle.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/2_your_domain.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:8080; # 代理到 Unblock 服务地址
}
}
nginx配置大概这样...
前面两个怎么弄啊,小白根本看不懂啊~给个详细教程好么?
iOS的热门单曲链接和其他平台不一样。不过不是很影响使用。
iOS的热门单曲链接和其他平台不一样。不过不是很影响使用。
我之前一直都在拿那个界面测试。。。测试到绝望。。。后来才发现在专辑里能正常听。。。。
iOS版的热门单曲链接和其他平台不一样。不过不是很影响使用。
大神,怎么弄的啊,求教~
@Anopia
是个 BUG,以后这样的问题新开一个 issue 吧(明晚修)
我试了下,网易云 iOS 6.2.0 不转发音源就可以用==
使用 WLAN 代理,手动和自动都行
不对,仅限网易自己的源,QQ 的还是要转发==
我试了下,网易云 iOS 6.2.0 不转发音源就可以用==
使用 WLAN 代理,手动和自动都行
不对,仅限网易自己的源,QQ 的还是要转发==
大佬,针对小白搞一个教程可以么,ios,真心不会操作啊
@1047958328
没有域名的话不建议折腾
有域名要签证书的话推荐用 acme.sh 比较方便,nginx 配置直接复制上面 @u3u 就行了
我没有义务什么都教啊(这其实就是搭建网站的步骤,善用搜索)
感觉网易云自己的源和别的源被区别对待可能是因为 response.headers 里什么标记字段,我找不出来==
@onewayticket255
我又不是网易员工==我咋知道
因为不管是 qq 源还是网易源都是被包装在 music.163.com/package/ 后面的
除了 response headers,这两个请求没有任何区别
还有一个问题
我发现我签 CA 证书的时候少写了 CN
,导致在 iOS 上不被当作 root CA,而无法手动信任
https://www.thesslstore.com/blog/trust-manually-installed-root-certificates-in-ios/
https://support.apple.com/zh-cn/HT204477
可能信任了以后就能用自签证书了?我试试看
还有一个问题
我发现我签 CA 证书的时候少写了CN
,导致在 iOS 上不被当作 root CA,而无法手动信任https://www.thesslstore.com/blog/trust-manually-installed-root-certificates-in-ios/
https://support.apple.com/zh-cn/HT204477可能信任了以后就能用自签证书了?我试试看
iOS 证书签了 在Certificate Trust Setting 不显示(旧版本成功过,不过iOS12.3之后就没成功过,很迷)
@onewayticket255 因为我的 CA 证书里漏了 CN(common name) ,所以虽然"描述文件"里有,但"证书信任设置"看不到,也就没法信任
@onewayticket255
试过了,重新签了证书,手动信任后,HTTPS API 请求可以直接 MITM,不需要降级
音源 endpoint 会被自动升到 https,也可以正常播放,QQ 源播放正常
之后 iOS 应该不需要 endpoint 了
@1047958328
没有域名的话不建议折腾
有域名要签证书的话推荐用 acme.sh 比较方便,nginx 配置直接复制上面 @u3u 就行了
我没有义务什么都教啊(这其实就是搭建网站的步骤,善用搜索)
要是能明白就不追着您问了。您辛苦,我不懂,撤了。打扰您了。
@1047958328
已经不需要 endpoint 了,不需要转发音源了,想试的话可以试一下
- 更新代码
- 安装新的 CA 证书,设备上点击链接应该会自动跳转https://raw.githubusercontent.com/nondanee/UnblockNeteaseMusic/master/ca.crt
- 在设置 > 通用 > 关于本机 > 证书信任设置,手动开启证书。官方教程:https://support.apple.com/zh-cn/HT204477
- 启动命令改为 node app.js -p port1:port2(port2 是用来内部转发的 https 端口),在 WiFi 设置里开启 http 代理,手动,填 IP 端口号 port1
- v0.16.0 及以上版本因音源默认不通过服务器转发,需要增加
-e http://music.163.com
或-e https://music.163.com
让音源请求通过服务器 (两种-e
哪个能用自行测试下)
@1047958328
已经不需要 endpoint 了,不需要转发音源了,想试的话可以试一下
- 更新代码
- 安装新的 CA 证书,设备上点击链接应该会自动跳转https://raw.githubusercontent.com/nondanee/UnblockNeteaseMusic/master/ca.crt
- 在设置 > 通用 > 关于本机 > 证书信任设置,手动开启证书。官方教程:https://support.apple.com/zh-cn/HT204477
- 启动命令改为 node app.js -p port1:port2(port2 是用来内部转发的 https 端口),在 WiFi 设置里开启 http 代理,手动,填 IP 端口号 port1
劳您费心了。谢谢您。我对编程一类的一窍不通,搞了好几天,除了搞到了域名和ssl以外没任何进展。不会配置转发音源一类的。
这个确实简单多了。可是第一步和第四步,真的抱歉,不明白怎么做。更新代码怎么做?启动命令又是哪个……唉,可能和这个项目无缘吧。
@onewayticket255
试过了,重新签了证书,手动信任后,HTTPS API 请求可以直接 MITM,不需要降级
音源 endpoint 会被自动升到 https,也可以正常播放,QQ 源播放正常之后 iOS 应该不需要 endpoint 了
我这里music.163.com/package/ 还是http 没有自动升级https
@onewayticket255
也就是说不能播?
是的,为什么你那里自动升级了https啊
@onewayticket255
我用的 WLAN 手动代理,它自动升级的
那如果你指定 endpoint 是 https://music.163.com 让它升级呢?
如果你一直是 surge 的话,麻烦用 WLAN 代理试一下
Line 257 in 9afdb3d
这里改成https就好了
@onewayticket255
-e https://music.163.com
有一样的效果,建议不要改代码,第一已经有接口了,第二 pull 的时候可以避免处理冲突
但是改了 https 以后可能 macOS 客户端用不了 我这边有邮件反馈这个
哇…到底应该怎么用…除了小火箭还需要其他app吗??我按照楼主教程下来添加了规则,开启小火箭后无效呀…
@app-AZ
谢谢,不过
你可以试试 0.14.2 以上版本,应该已经不再需要单独开一个域名来转发了
证书仓库里有,如果不想自己签就用现成的
个人感觉装证书更简单,点开连接就好了
https://raw.githubusercontent.com/nondanee/UnblockNeteaseMusic/master/ca.crt
用了证书可以继续用小火箭的,并不冲突
有证书还可以打开网页版
当然用证书也有缺点,就是你要在所有要用代理的设备上装证书
@app-AZ
按照上面的步骤 #65 (comment)
证书装了吗?信任了吗?打开网页版 music.163.com 会报不安全吗?
@nondanee
可以了,是昨天的服务器不行
昨天开了个gcp us-west1(俄勒冈州)的免费实例测试,果然是拉中之拉,速度慢的一批,今天用了jp的完全可以,我的问题,sry。
教程步骤也同步更新了https://appaz.top/index.php/archives/15/小白应该能看懂吧
@app-AZ 好的
@nondanee
可以了,是昨天的服务器不行
昨天开了个gcp us-west1(俄勒冈州)的免费实例测试,果然是拉中之拉,速度慢的一批,今天用了jp的完全可以,我的问题,sry。
教程步骤也同步更新了https://appaz.top/index.php/archives/15/小白应该能看懂吧
你好,你能听周杰伦七里香专辑里面的 “我的地盘” 这首歌吗,我用了转发音源和nondanee的2种方法都不可以在ios设备上播放,亮是亮了就是无法播放
@dxmaimxd
首先,亮了和能播放是两码事
不过我试了下,《我的地盘》是可以匹配到 QQ 的音源的
如果匹配到了 log 里看得出来,麻烦贴一下你的 log
只有这首不行吗?应该不会吧?你清一下缓存看看
@dxmaimxd
首先,亮了和能播放是两码事
不过我试了下,《我的地盘》是可以匹配到 QQ 的音源的
如果匹配到了 log 里看得出来,麻烦贴一下你的 log
只有这首不行吗?应该不会吧?你清一下缓存看看
大佬 清理缓存了不能放的变多了 我用了nginx转发,根据 #65的提示做的
@dxmaimxd
首先,亮了和能播放是两码事
不过我试了下,《我的地盘》是可以匹配到 QQ 的音源的
如果匹配到了 log 里看得出来,麻烦贴一下你的 log
只有这首不行吗?应该不会吧?你清一下缓存看看
安装证书成功,不折腾了 Nginx转发搞不明白
@dxmaimxd
首先,亮了和能播放是两码事
不过我试了下,《我的地盘》是可以匹配到 QQ 的音源的
如果匹配到了 log 里看得出来,麻烦贴一下你的 log
只有这首不行吗?应该不会吧?你清一下缓存看看
成功,感谢大佬
有个问题是,ios手机可以通过wifi然后设置代理听歌,流量就没有代理了,这个怎么解决呢
有个问题是,ios手机可以通过wifi然后设置代理听歌,流量就没有代理了,这个怎么解决呢
什么叫流量就没有代理了?
有个问题是,IOS手机可以通过无线网络连接然后设置代理听歌,流量就没有代理了,这个怎么解决呢
什么叫流量就没有代理了?
就是蜂窝网数据没有找到设置代理的地方,是ios手机没有吗
有个问题是,IOS手机可以通过无线网络连接然后设置代理听歌,流量就没有代理了,这个怎么解决呢
什么叫流量就没有代理了?
就是蜂窝网数据没有找到设置代理的地方,是ios手机没有吗
可以使用shadowrocket,quantumult或者surge这种第三方代理软件
有个问题是,IOS手机可以通过无线网络连接然后设置代理听歌,流量就没有代理了,这个怎么解决呢
什么叫流量就没有代理了?
就是蜂窝网数据没有找到设置代理的地方,是IOS手机没有吗
可以使用shadowrocket,quantumult或者浪涌这种第三方代理软件
那我试下ssr这种软件
@onewayticket255 那应该是服务器问题吧 我用的腾讯云
你好 我使用服务器转发音源后 听歌就会变得很卡,请问转发音源会拖慢网速吗
@wuhan0823
跟你服务器有关系
如果你是国外服务器,我记得老哥用了cdn进行中转,就是很慢
国内服务器就不会这样
国外服务器就忍着吧,跟fq一样,数据都是经过服务器再转发到你电脑上,虽然慢,但不影响听歌
@wuhan0823 看你腾讯云带宽了,1M带宽最大速度128k,又要上传又要下载,理论平均分的话,她下载64K你才同步接收64K
@wuhan0823
我用的gcp,最近的vps都被玩烂了,别考虑了,最近墙vps挺严重的,我三台外服两台被墙了好好用国内的吧,腾讯云起码是稳定带宽,这带宽不影响你正常听歌
@wuhan0823 防火墙9999端口也要开放
@wuhan0823
去宝塔pm2管理器删除项目再弄
再不行截图pm2 logs
@1047958328
已经不需要 endpoint 了,不需要转发音源了,想试的话可以试一下
- 更新代码
- 安装新的 CA 证书,设备上点击链接应该会自动跳转https://raw.githubusercontent.com/nondanee/UnblockNeteaseMusic/master/ca.crt
- 在设置 > 通用 > 关于本机 > 证书信任设置,手动开启证书。官方教程:https://support.apple.com/zh-cn/HT204477
- 启动命令改为 node app.js -p port1:port2(port2 是用来内部转发的 https 端口),在 WiFi 设置里开启 http 代理,手动,填 IP 端口号 port1
弱弱问一句,这样做的话为什么PAC模式就不行,必须是手动呢?(至少我iPhone上只有手动才work)
感谢!
@1047958328
已经不需要 endpoint 了,不需要转发音源了,想试的话可以试一下
- 更新代码
- 安装新的 CA 证书,设备上点击链接应该会自动跳转https://raw.githubusercontent.com/nondanee/UnblockNeteaseMusic/master/ca.crt
- 在设置 > 通用 > 关于本机 > 证书信任设置,手动开启证书。官方教程:https://support.apple.com/zh-cn/HT204477
- 启动命令改为 node app.js -p port1:port2(port2 是用来内部转发的 https 端口),在 WiFi 设置里开启 http 代理,手动,填 IP 端口号 port1
弱弱问一句,这样做的话为什么PAC模式就不行,必须是手动呢?(至少我iPhone上只有手动才work)
感谢!
是我自己zz了把http写成了https
@goxofy
用自签证书时加上-e https://music.163.com
试一下
@nondanee 感谢回复,我启动命令就是加过 -e https://music.163.com的,但是还是不行
@goxofy
如果你每一步都按这个做了 #65 (comment)
而且又试过这两种启动参数
-p <port1>:<port2>
-p <port1>:<port2> -e https://music.163.com
但还是不行的话
我就没办法了
而且我现在没法借 iOS 设备...
@goxofy
如果你每一步都按这个做了 #65 (comment)
而且又试过这两种启动参数-p <port1>:<port2> -p <port1>:<port2> -e https://music.163.com
但还是不行的话
我就没办法了
而且我现在没法借 iOS 设备...
好吧,确实是按照#65步骤做的
@1047958328
已经不需要 endpoint 了,不需要转发音源了,想试的话可以试一下
- 更新代码
- 安装新的 CA 证书,设备上点击链接应该会自动跳转https://raw.githubusercontent.com/nondanee/UnblockNeteaseMusic/master/ca.crt
- 在设置 > 通用 > 关于本机 > 证书信任设置,手动开启证书。官方教程:https://support.apple.com/zh-cn/HT204477
- 启动命令改为 node app.js -p port1:port2(port2 是用来内部转发的 https 端口),在 WiFi 设置里开启 http 代理,手动,填 IP 端口号 port1
大佬 我mac的证书和ios是一样吗,我这边安装证书报错,无法安装
@walle1101
一样的。报什么错?
@walle1101
看不见图,你来 issue 里回复吧,邮件回复图片好像是不行的。
@walle1101
一样的。报什么错?
@walle1101
查了下 -25294 错误
https://apple.stackexchange.com/questions/147491/when-i-try-to-install-my-certificate-in-keychain-the-error-says-unable-to-impo
里面说拖到"登录"那个里面就可以了
谢谢 我今晚再试试看 我前面其实也尝试过拖到登录,但是会完全没有响应,找不到拖进去的那个文件无法授权
请问这个配置 Nginx 转发音源是干啥的?最新本的还需要配置吗?
iphone 是需要下载那些代理软件吗?
这样的配置ios还能用吗?
我尝试按着那个配置,发现ios网易云中歌曲是被点亮了,但是点进去播放提示歌曲不存在。我不知道是否哪里出问题了。
port2是否可以随意填? 还是port2也需要开放到外网访问?
我加了-o kuwo migu参数之后,又提示网络不给力,无法继续播放。日志输出如下:
[25641369] 明明就
http://win.web.rb01.sycdn.kuwo.cn/198df79ad716e5f14502f38b3cc32a8a/5d60fc90/resource/n3/35/24/2419740775.mp3
MITM > win.web.rb01.sycdn.kuwo.cn
TUNNEL > win.web.rb01.sycdn.kuwo.cn:443
TUNNEL > win.web.rb01.sycdn.kuwo.cn:443
@u3u
好的,谢谢回答,我还以为只有我自己是这样的呢。
因为就在我大概是上个星期发现这个项目的时候,git下来什么都没有改,直接forever start app.js -p 465
,然后在代理软件中配置代理,IOS就可以食用了。
忘记是什么时候,IOS手机端就不能用了。
嘻嘻,小白一枚,等待大佬们能有新的方法,感谢。
客户端是用的shadowsocks,也是配这这几个规则,http代理, 客户端一直播放失败
@Xuzan9396
证书没装的话装上
用 -o joox
试一下,香港可用,其它都不可用