海外对网易云音乐的IP伪装

2019年1月19日更新,终极大招,超级简单但是特别高效的方法,只要网易不倒闭就能免费永久管用。

参考我新的帖子:https://shuspieler.com/blog/1155/


2018年11月11日更新。详见文章末


习惯用网易云音乐,可是大陆之外的由于版权原因,很多歌曲都不能播放,播放列表打开灰蒙蒙一片。

初始方案是对网易云音乐全局代理。我在中国的家里路由器搭建了一个XXX服务器,可以连接回去,这样播放器就认为自己身处国内,当然所有音乐可以播放。我的实现过程比较特别,可能其他人很难搭建我的这个环境,这篇文章更大的意义是对这次折腾的一个记录。

我在中国的家里和这边都是用的是极路由,国内连接的是100M联通宽带,上传大约26M。测速如下:

在中国家里极路由运行XXX服务器以及动态域名,这样PPPOE改变IP这边也能自动找到服务器。

在德国这边我在极路由端设置连接,运行模式选择企业组网方式,这样实现特定的IP走VPN通道,普通流量保持直连。

其中的ip地址是用wireshark以及iOS端Stream抓网易云音乐的包记录下来的。由于会有CDN的原因,所以各个地方略微不同。由于全局代理所有音乐数据都需要国内路由器中转,这样造成数据流很卡顿,并且我找到更好的方法代替全局代理,音乐数据可以直连,所以这里我就不放出全局代理的填写模板了。所有朋友推荐用下边的方式。

优化后的方法:

网易云音乐在全球有很多的CDN加速节点。经过测试对于用于IP检测主要在下边几个网址请求时候完成的:

music.163.com
interface.music.163.com
nstool.netease.com
ip.ws.126.net
music.httpdns.c.163.com
http://ipservice.163.com/isFromMainland

在经过主程序和这些服务器的交流,检查完IP来源以及会员状态, 就下发播放列表以及就近资源服务器。有了这些后,音乐数据服务器不再检查IP来源。

这样我们在国外极路由企业组网IP框里讲这几个主程序用到的IP填进去,使之走中国IP中转,配置如下:

103.65.41.0/255.255.255.0
88.134.182.0/255.255.255.0
59.111.160.0/255.255.255.0
59.111.19.0/255.255.255.0
35.157.85.0/255.255.255.0
18.195.0.0/255.255.0.0

这样已经可以正常使用网易云音乐了,播放音乐比之前快了很多,因为现在音乐数据是客户端直接连接中国的服务器。同时偶尔还会有卡顿,原因是数据大多数是中国传过来的,距离远所以速度被局限。下一步可以将数据源从中国获取改为网易放在海外的缓存。在介绍这个前,先看一下我在我这里之前嗅探的网易云音乐地址:

其中m 指的 m*.music.126.net 音乐服务器,星号换成下边的数字就是IP对应的地址。p指的p*.music.126.net图片服务器。

m1 123.58.180.106 ok
m2 1.1.1.1
m3 157.185.150.115 ok
m4 157.185.150.115 ok
m5 123.58.180.105 ok
m6 123.58.180.105 ok
m7 148.253.246.9 ok 148.253.246.197 美国
m8 88.134.182.88 ok 88.134.182.106 德国
m9 148.253.246.70 ok
m10 1.1.1.1
m11 157.185.146.135 ok
m12 183.129.221.10 
m13 123.58.180.105 ok

m2 DNS污染,ping netease.ugcvideoss.ourdvs.com这个节点,将IP设置成一样的。

m10 对于海外也有DNS污染,和m2一样,设置成ping netease.ugcvideoss.ourdvs.com这个节一样的IP。
 #ws.acgvideo.com https://github.com/acgotaku/NetEaseMusicWorld/issues/1
 #那个是bi站的cdn节点,我这里测试歌曲容易变灰,就像又检查了一遍IP一样,我这里这个不太行。这个是网易在网宿的cdn节点netease.ugcvideoss.ourdvs.com

p1 148.253.246.197
p2 148.253.243.9
p3 148.253.243.9
p4 148.253.245.199
p5 123.58.180.105
p6 123.58.180.106
p7 123.58.180.105
p8 123.58.180.105
p9 123.58.180.105
p10 123.58.180.106
p11 123.58.180.105
p12 123.58.180.105
p13 123.58.180.106

music.163.com 103.65.41.125 103.65.41.126 OK
??? 59.111.160.197
nstool.netease.com 35.157.85.251
18.195.235.66
crash.163.com 223.252.199.21 广告跟踪
ip.ws.126.net 59.111.19.7 网易IP检查
music.httpdns.c.163.com 223.252.199.66

http://ipservice.163.com/isFromMainland 59.111.160.197

其中服务器多数都是正常解析的,有m2和m10有DNS污染,在国内解析正常,国外解析就成了127.0.0.1和1.1.1.1这种一看就是错误的ip了。通过站长之家的工具更能清楚看到区别:

http://ping.chinaz.com/m2.music.126.net

http://ping.chinaz.com/m10.music.126.net

在国外用网易云音乐时候,这两个服务器解析失败则自动切换其他服务器,所以这也就是不用管这两个错误仍然可以正常听音乐的原因。后遗症是偶尔手机客户端提示歌曲不存在,但是又还能正常收听,原因可能就在此,从m10找歌没找到提示失败,但是又从其他服务器找到了,所以能播放。

网易在全球有CDN加速节点,那么将这两个服务器解析到就近的加速服务器那么加载速度又会进一步提高。网易用网宿的CDN,ping下边这个网宿的CDN:

ping netease.ugcvideoss.ourdvs.com

得到的IP地址就是网宿最近的加速服务器,在极路由插件中,将m10.music.126.net 以及m2.music.126.net的host设置成此:

如图我这里得到的IP是163.171.132.117这是在英国的服务器,已经离我很近了。

到此网易云音乐就可以正常使用了并且速度超高,音乐数据源已经从中国换成了旁边的英国。

2018年11月11日更新

写这篇文章时候是一些国外没有版权的音乐不能播放。最近欧洲出台了最严厉的数据保护法GDPR,本意是督促公司建立更完善的制度,从而保护欧洲网络用户的隐私权,可最直接的后果是类似于网易云音乐等中国公司直接关闭了在欧洲的服务。。。不管是网页端还是手机app端都直接拒绝使用。现在app检测力度似乎也升级了,如果按照上边的配置,我的app会时不时检测出我身处欧洲如下图,并且强行将我的云音乐账号登出。之后我还是可以尝试登陆可是输入账号密码,但是特别的麻烦,每天弹出好多次这个窗口我就得登陆好多好多次。于是我下决心解决一下这种仍然会被检测到的情况。

我用Charles在电脑上设置一个代理,手机通过这个代理服务器联网,同时手机安装Charles根证书,这样SSL加密的数据也可以看到,类似于中间人攻击的方式。通过分析我发现现在网易特别的鸡贼,可能DNS欺骗的人太多了,现在他们都是用自己的服务器通过HTTP来获取网易服务器的真实IP,这样可能遇到新的服务器地址,从而避开我设置好的XXX线路而暴露自己的真实IP。之前将music.httpdns.c.163.com屏蔽掉它还能正常解析的原因就在此。下边是抓包得到的一个例子:

{
	"dns": [{
		"host": "music.httpdns.c.163.com",
		"ips": ["223.252.199.66", "223.252.199.67", "59.111.160.195", "59.111.160.197", "106.38.230.175", "123.126.94.243"],
		"ttl": 3600,
		"http2": 0
	}],
	"client": {
		"ip": "xxx.xxx.xxx.xxx",
		"line": 270614560
	}
}

网易云音乐app先通过HTTP获取music.httpdns.c.163.com的真实IP,然后再通过这个服务器得到其他资源的真正地址,同样像下边抓包得到的数据例程:

{
	"dns": [{
		"host": "interface.music.163.com",
		"ips": ["59.111.181.35", "223.252.199.66", "223.252.199.67", "59.111.160.195", "59.111.160.197", "39.105.63.80", "47.100.127.239", "118.24.63.156", "193.112.159.225"],
		"ttl": 300,
		"http2": 0
	}],
	"client": {
		"ip": "xxx.xxx.xxx.xxx",
		"line": 270614560
	}
}

{
	"dns": [{
		"host": "music.163.com",
		"ips": ["59.111.181.35", "223.252.199.66", "223.252.199.67", "59.111.160.195", "59.111.160.197", "47.100.127.239", "118.24.63.156", "193.112.159.225", "39.105.63.80"],
		"ttl": 300,
		"http2": 0
	}],
	"client": {
		"ip": "xxx.xxx.xxx.xxx",
		"line": 270614560
	}
}

一开始我尝试封锁获取HTTP-DNS服务器的第一入口,就是说,让app并不能获取到真正的music.httpdns.c.163.com的IP,这样强迫软件进行常规dns查询以及路由。我通过路由器的iptables进行IP屏蔽,发现app能更换很多地址获取到music.httpdns.c.163.com真实的IP,就像是无穷无尽根本封堵不完。后来我索性对这个网易自己DNS服务器进行放行,我将目标锁定在它查询出来的地址。我将这些地址设置成走我的VPN路线,那么不就也实现了所有网易云音乐数据离开了欧洲。下边是我整理过后的VPN设置页面企业组网那个框框里边写入的数据。

103.65.41.0/255.255.255.0
59.111.160.0/255.255.255.0
106.2.69.113/255.255.255.255
59.111.181.0/255.255.255.0
233.111.181.0/255.255.255.0
223.252.199.0/255.255.255.0
103.65.40.75/255.255.255.255
59.111.19.7/255.255.255.255
106.38.230.175/255.255.255.255
123.126.94.243/255.255.255.255
47.100.127.239/255.255.255.255
118.24.63.156/255.255.255.255
193.112.159.225/255.255.255.255
39.105.63.80/255.255.255.255

这里有个问题,就是极路由不知道为啥很傻逼这个框只让填8条IP段,真是不科学。我研究了研究发现这个显示是作用于浏览器,我用工具直接POST数据过去,事实证明可以完美运行。过程稍微有点冷门,可能并不是每个人感兴趣的,所以我这里就不放出来了。如果有同学需要步骤可以给我留言,有人要参考的话我再写一篇博客。

这样操作后被检测处理的频率小多了,基本上我听歌几个小时都不再被查到。可是偶尔还会蹦出那个烦人的窗口,后来我挂着代理听了一下午歌,终于捕捉到一个弹出窗口时候的触发数据。

网易云音乐在不定期会上传一些诊断信息,包括crash以及其他不知道都有啥的用户资料,然后打包成一个zip文件传回服务器。在这条数据传输过后app瞬间弹出了GDPR窗口。我个人分析在这个数据包中,应该是有能够判断我身处欧洲的证据。对于这个怀疑我没有切实的证据,因为实在是才巧了,所以有了这个猜测。另外可能一定程度说明了为啥网易云音乐不敢让欧洲的用户使用,这样明目张胆的上传不说明的用户数据到服务器的行为,在这儿应该会被罚破产吧,不过在中国没事儿。

这就是补充的网易音乐海外IP伪装的步骤。现在极个别情况下仍然还会被检测到,不过已经在可接受范围内了。同时有个技巧可以在此分享一下,当iOS上弹出那个GDPR窗口后,不要点击确定,那样就会被强制登出账号,之后还得输入账号密码好麻烦。当遇到那个窗口后通过系统强行退出软件,再打开一边app就正常了,并且还是登陆状态,这个方法再安卓似乎不行。另外可以在系统设置不让软件使用流量,这样当出门在外就可以听之前缓存的歌曲,这个与下载不下载无关,只要是之前在家听过有缓存都可以听,很爽的。

Reference:

https://www.zhihu.com/question/293733358/answer/506700229

https://guyigenius.wordpress.com/2015/08/06/netease-cloudmusic-scripts-overseas/

https://github.com/acgotaku/NetEaseMusicWorld/issues/1

https://dev.yunxin.163.com/docs/product/%E7%82%B9%E6%92%AD/%E6%9C%8D%E5%8A%A1%E7%AB%AFAPI%E6%96%87%E6%A1%A3?pos=toc-4-8

9 thoughts on “海外对网易云音乐的IP伪装”

    1. 哈哈,在这里不能听音乐真是太苦逼了。我这个教程对环境要求比较高,不知道能不能帮助到你。

  1. 高手,我下了网易uu主机加速器,不停告诉我路由器不适用怎么解啊?就想在美国继续听网易云音乐,高手请帮忙!

Leave a Reply to shuspieler Cancel Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.