uku / Unblock-Youku

A Chrome extension helping users access their web services while traveling outside mainland China
https://uku.im
GNU Affero General Public License v3.0
3.18k stars 650 forks source link

网易云音乐不能用 #488

Closed BellaMa closed 5 years ago

BellaMa commented 9 years ago

3个模式都不行😢

tommyzhaozbh commented 8 years ago

今天终于看到是哪里出问题了,有两条地址的js会进行地址检测,导致歌单部分歌曲(而不是全部歌曲)出现地区限制无法播放。 http://s3.music.126.net/s/2/pt_frame_index.js?* http://s3.music.126.net/s/2/pt_content_song.js? 第一条是控制播放、收藏按钮的,后面一条貌似是控制评论的。 capture 但至于该怎么修改这我还真的不知道呢……求高手

yanggis commented 8 years ago

日文和韩文的歌曲很多都是这样,在中国大陆一样听不了,这些歌基本都是八月份日本韩国版权方对中国在线媒体发起了诉讼导致这些歌曲被下架的。如果已经被下架,就是人肉翻墙回大陆也听不了,没办法……。

karlcheong commented 8 years ago

m2.music.126.net 的問題是網易dns對海外的解析請求返回了1.1.1.1 除了redirect方式外, 自己架dns的話也可以把這個域名指向國內的dns服務器(eg 114.114.114.114,1.2.4.8)

網頁封鎖的問題, 解決方法有2個 最簡單是把相關html頁面通過國內代理, 又或者, 使用privoxy把網頁上按鈕的禁用代碼給改掉 (我不會userscript,或許也能通過userscript做到)

actions

{ +filter{163musicweb} +force-text-mode }
music.163.com/$
music.163.com/my/$
music.163.com/discover.*
music.163.com/album\?.*
music.163.com/playlist\?.*
music.163.com/song\?.*
music.163.com/artist\?.*
music.163.com/dj\?.*

{+filter{163musicapp} +force-text-mode }
music.163.com/eapi/v1/music/matcher
music.163.com/eapi/v1/music/matcher/history
music.163.com/eapi/copyright/restrict/.*
music.163.com/eapi/batch
music.163.com/eapi/search/get\?.*
music.163.com/eapi/v1/search/get
music.163.com/eapi/artist/.*
music.163.com/eapi/v1/artist/.*
music.163.com/eapi/song/detail.*
music.163.com/eapi/song/enhance/privilege
music.163.com/eapi/v3/song/detail.*
music.163.com/eapi/album/.*
music.163.com/eapi/v1/album/.*
music.163.com/eapi/v2/playlist/detail.*
music.163.com/eapi/v3/playlist/detail.*
music.163.com/api/copyright/restrict/.*
music.163.com/api/batch
music.163.com/api/search/get\?.*
music.163.com/api/artist/.*
music.163.com/api/song/detail.*
music.163.com/api/album/.*
music.163.com/api/v2/playlist/detail.*
music.163.com/user/listenedSongs/\?.*

filter

FILTER: 163musicweb Replace 163web code
s|var GCopyrights = \[.*\];|var GCopyrights = [];|Ug
s|var GRestrictive = true;|var GRestrictive = false;|
s|var tmp_restrictive = isRestrictive\(x\)|var tmp_restrictive = false|
s|data-res-copyright="0"|data-res-copyright="1"|g
s|data-copyright="0"|data-copyright="1"|g
s|data-status=\-1|data-status=0|g
s|"status":\-1|"status":1|g
s|li class="js-dis"|li onmouseover="this.className='z-hvr'" onmouseout="this.className=''"|g
s|class="(.*) js-dis">|class="$1">|g
s|<div id="content-operation" class="btns f-cb" data-rid="(.*)" data-type="18">\x0a<a class="u-btni u-btni-play u-btni-play-dis" title=".*" href="javascript:;"><i>(.*)</i></a>|<div id="content-operation" class="btns f-cb" data-rid="$1" data-type="18">\x0a<a data-res-action="play" data-res-id="$1" data-res-type="18" href="javascript:;" class="u-btn2 u-btn2-2 u-btni-addply f-fl" hidefocus="true" title="$2"><i><em class="ply"></em>$2</i></a>\x0a<a data-res-action="addto" data-res-id="$1" data-res-type="18" href="javascript:;" class="u-btni u-btni-add" hidefocus="true" title="\xE6\xB7\xBB\xE5\x8A\xA0\xE5\x88\xB0\xE6\x92\xAD\xE6\x94\xBE\xE5\x88\x97\xE8\xA1\xA8"></a>|U

FILTER: 163musicapp Replace 163app code
s|"restrictedCopyright":\[.*\],|"restrictedCopyright":[],|
s|"status":\-1,|"status":0,|g
s|"status":1,|"status":0,|g
s|"fee":1,|"fee":0,|g
s|"st":\-\d+,|"st":0,|g
#s|"st":\-100,|"st":0,|g
#s|"payed":0,|"payed":1,|g
s|"pl":0,|"pl":320000,|g
s|"dl":0,|"dl":320000,|g
jixunmoe commented 8 years ago

@karlcheong 可以做到 但是感覺在這裏回復會作死

作死看看

// ==UserScript==
// @name         簡單繞過 163 的某個提示
// @namespace    org.jixun
// @version      0.1
// @description  你猜
// @author       Jixun
// @include      http://music.163.com/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

// 播放器
nm.x.jC = function () {
  return false;
};

// 搜索頁面
NEJ.P('nej.e');
var _bI = nej.e.bI;
nej.e.bI = function (z, name) {
  if (name == 'copyright' || name == 'resCopyright') {
    return 1;
  }

  return _bI.apply(this, arguments);
};

單曲頁面會點不了播放,可以收藏然後到自己的歌單那播放

tommyzhaozbh commented 8 years ago

@yanggis 但问题是这首歌用代理了就可以听,这才是问题……

yanggis commented 8 years ago

@tommyzhaozbh,对不起啊,可能是我误会你的意思了。因为我一点这首歌就可以听,就想当然的以为你是说别的不能听呢,就联想到前一段版权问题下架的曲目了。

Wtc0631 commented 8 years ago

iOS 客户端也没法放 没提示地区什么的 就是缓冲不出来 提示播放失败

xkk commented 8 years ago

今天我这边也发现了些问题 就是单首播放全部提示地区版权 无法播放 但是某些歌单可以全部播放 但是单受里面全灰 不能播放(点击后出现 地区版权 无法播放)

xkk commented 8 years ago

@JixunMoe 用tampermonkey跑你的script的时候 提示有两个script在跑 你那边有这个情况吗? 正常吗?

yanggis commented 8 years ago

谁能提供几个单首不能播放的链接,我测试一下。

xkk commented 8 years ago

@yanggis

/song?id=299449

/song?id=167942

/song?id=168016

yanggis commented 8 years ago

@xkk 你提供的这几个都是m2.music.126.net服务器上的,现在可以听啊。我在DNS服务器104.236.189.178上加上了强制redirect,会自动连到p2.music.126.net的啊。如果没做redirect,m开头的海外都因为DNS解析错误听不了。这个问题现在已经解决了呀。

gxhubert commented 8 years ago

谢谢 @yanggis 确实可以用了。 大神 问个小白的问题啊 如何让104.236.189.178 DNS服务器 强制redirect啊?

xkk commented 8 years ago

@yanggis 我的是通过 @JixunMoe 的那个方法直接在host中添加的地址 然后那几个不能听这么说的话可能是我这边插件的问题 但是使用了

// ==UserScript== // @name 簡單繞過 163 的某個提示 // @namespace org.jixun // @version 0.1 // @description 你猜 // @author Jixun // @include http://music.163.com/* // @grant none // @run-at document-end // ==/UserScript==

// 播放器 nm.x.jC = function () { return false; };

// 搜索頁面 NEJ.P('nej.e'); var _bI = nej.e.bI; nej.e.bI = function (z, name) { if (name == 'copyright' || name == 'resCopyright') { return 1; }

return _bI.apply(this, arguments); };

这个代码后就没有问题 能直接听 我现在也不知道什么问题了

aar0u commented 8 years ago

// ==UserScript== // @name 网易云音乐@海外 // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author Aaron // @match http://music.163.com/* // @grant none // ==/UserScript==

(function() { GAbroad = false; //document.getElementById('g_iframe').contentWindow.GAbroad = false;

var elems = document.querySelectorAll(".js-dis");

[].forEach.call(elems, function(el) {
    el.classList.remove("js-dis");
});

})();

以上解决海外提示和反灰显示。 m. to p. 还是靠上面的redirect比较简单

kossel commented 8 years ago

在chrome 用 Tampermonkey + userscript 解决了问题,但是最后还是选择了付费,免费用了4个月,现在8块一个月,觉得好用的东西还是付费好了

jixunmoe commented 8 years ago

@xkk 正常 因为云音乐是框架结构。

j20120307 commented 8 years ago

mac客户端能通过改hosts解决吗

yanggis commented 8 years ago

@j20120307 Mac客户端修改DNS吧,相对简单点。

j20120307 commented 8 years ago

@yanggis 好像都是m2的问题 这个为啥不能通过改hosts搞定撒? update: 改了dns上别的网都变慢了>。< update2: mac客户端并不能改啊-。-

tommyzhaozbh commented 8 years ago

Tampermonkey+userscript确实是解决了问题,尽管歌单还是灰色的,但可以播放了。但唯一一个美中不足的是,如果有MV的话MV的按钮还是灰色不能点的。如果能解决这个问题的话应该挺完美的了。 PS:为了听一个歌都要各种折腾,我还是跑企鹅去好了……

spinosae commented 8 years ago

Firefox + hola extension works like a charm!

Oddly enough, chrome + hola doesn't work. Chrome was able to bypass the country restriction but failed to resolve domain name m2.*. Wonder why the different behaviors between Firefox, Chrome and Edge.

tommyzhaozbh commented 8 years ago

@spinosae Not suggested using hola. It is said that it is actually a vpn network which is contributed by the users. Any user who is using the plugin actually becomes a vpn for other people to use and you cannot change any settings about that since it is the working principle for hola.

spinosae commented 8 years ago

@tommyzhaozbh I am open to trade some bandwidth for convenience. Plus I was using the browser plugin instead of desktop client. Hola couldn't use my computer a node, can it?

tommyzhaozbh commented 8 years ago

@spinosae But the problem is no matter desktop client or plugin in browser, the principle is the same. That means your computer will become a node for others to connect once you turn on the plugin. When there is someone chooses a region you are in for the proxy service, your computer can be searched by the plugin and will be connected without prior notice. Also I've tested the desktop client. It is actually a Firefox in which hola is embedded. The biggest problem is that you can never know who is connecting to your computer or what they are doing via the vpn. So for security reason, turn off the plugin if not needed.

j20120307 commented 8 years ago

@aar0u http://music.163.com/#/song?id=27598474 这个用了script能看到播放吗?我这里好像不可以?客户端+代理可以听

jixunmoe commented 8 years ago

@j20120307 试试把这段代码加到脚本末尾:

(function ($) {
  var $playBtn = $('.u-btni-play-dis');
  if (!$playBtn) return ;

  var rid = $playBtn.parentNode.getAttribute('data-rid');
  var html = '<a data-res-action="play" data-res-id="' + rid
    + '" data-res-type="18" href="javascript:;" class="u-btn2 u-btn2-2 u-btni-addply f-fl" hidefocus="true" title="播放"><i><em class="ply"></em>播放</i></a><a data-res-action="addto" data-res-id="'
    + rid + '" data-res-type="18" href="javascript:;" class="u-btni u-btni-add" hidefocus="true" title="添加到播放列表"></a>';
  $playBtn.outerHTML = html;
})(document.querySelector.bind(document));

另外这个脚本上传到 Gist 了。

chanchanzhang-zz commented 8 years ago

great! works with Tampermonkey + userscript from @JixunMoe , is it possible to get "download" works also?

hlx98007 commented 8 years ago

edit: method expired

ghost commented 8 years ago

@yanggis 但是有个很奇怪的问题就是,在Android客户端上面使用这个DNS会导致用户页加载失败,重试多遍也无效,使用默认DNS后恢复。

yanggis commented 8 years ago

@gaosong2101,好的,我这两天看一下啊。

ghost commented 8 years ago

@yanggis 感谢~

freeyoung commented 8 years ago

网易云音乐网页版已经将 CDN 域名修改为 m10.music.126.net,而非之前的 m2;

m2 改为 p2 已失效,m10 改为 p2 亦未成功。

m10.music.126.net 使用海外 DNS 查询则返回 127.0.0.1,与之前 1.1.1.1 的行为也不一致。

德国电信用户

yanggis commented 8 years ago

@gaosong2101 @freeyoung,云音乐的问题我修复了一下,现在应该可以用了。你们测试一下。

yanggis commented 8 years ago

@gaosong2101 @freeyoung,现在的更新主要是在104.236.189.178 DNS服务器上有效。

ghost commented 8 years ago

Screenshot 还是不行(已重启、开关飞行模式)。 这样的现象也同样发生在 #112 这个DNS上。

yanggis commented 8 years ago

@gaosong2101,这个问题我还没碰到过,手边没有Android设备,没法测试,但是我在IPhone上测试的确没有问题。可以正常加载账号界面啊。按说iOS版的Android版用的同样的服务器,不用出现一方可以访问,另一方不能访问的情况啊。您那里还有其他Android设备安装云音乐软件测试一下看看是不是也出现这样的问题。

ghost commented 8 years ago

@yanggis 手头有台原生6.0的Nexus 9,试验了一下,结果是一样的——无法加载。

yanggis commented 8 years ago

@gaosong2101,除了不能加载用户界面,听音乐正常吗?

ghost commented 8 years ago

@yanggis 嗯,其他都正常。「查看用户页」可以正常加载顶端的用户介绍、绑定的账号,但是不能加载下面的播放排行、歌单。(估计应该不是一个服务器

ghost commented 8 years ago

@yanggis 我刚才抓包看了一下,客户端的确是接到这些数据了(source是DNS的ip)。 但是不知道为什么用DNS的情况下就会提示「加载失败」,而用默认DNS(Google)就会正常出现。 (话说它客户端会不会去验证来源ip啊?

ghost commented 8 years ago

[Full request URI: http://music.163.com/eapi/user/playlist/?uid=【PRIVATE】&limit=10&offset=0]

yanggis commented 8 years ago

@gaosong2101,我知道这个链接,music.163.com工作是正常的呀,每次都是返回的值都是200,说明请求结果是正确返回了啊。所以,现在很奇怪问题出在什么地方了。

Chrisplus commented 8 years ago

Ubuntu 15.10. Chrome 47 64bit 新加坡 上周开始可以使用网页听了,但是从昨天开始,点击播放键,会出现播放失败的提示。

ghost commented 8 years ago

RE @yanggis 我也去问网易他们了,他们说是我网络问题… (话说网易云要unblock的话必须要代理music.163.com这个域吗)

yanggis commented 8 years ago

@Chrisplus 你用的是104.236.189.178的DNS吗?

yanggis commented 8 years ago

@gaosong2101 music.163.com这个肯定是要走代理的,要不然播放列表加载进来就提示版权问题所在地区不允许播放。

Chrisplus commented 8 years ago

@yanggis 多谢回复,并没有更改过dns

yanggis commented 8 years ago

@Chrisplus 可能与unblock遭受DDOS攻击有关系。具体可以看这个报告,github.com/Unblocker/Unblock-Youku/issues/534#issuecomment-162263913

Chrisplus commented 8 years ago

@yanggis 多谢,如果是这样,那我只能再等等了。 下面是我载入页面到播放音乐,console输出的log,希望可能有帮助

Uncaught TypeError: Cannot set property 'GAbroad' of undefined(anonymous function) @ VM579:1(anonymous function) @ VM579:1 core.js?4999f976dbad57d2d9eb3c8c8dec0c8b:93 GET http://m10.music.126.net/20151206151707/9341332af6b2218945cd886fe360123a/ymusic/8e58/5b5e/8fb8/b20a722e3886bd8714f20a96b297a665.mp3 net::ERR_CONNECTION_REFUSED(anonymous function) @ core.js?4999f976dbad57d2d9eb3c8c8dec0c8b:93V @ core.js?4999f976dbad57d2d9eb3c8c8dec0c8b:93h @ core.js?4999f976dbad57d2d9eb3c8c8dec0c8b:93f @ core.js?4999f976dbad57d2d9eb3c8c8dec0c8b:93 m10.music.126.net/20151206151707/9341332af6b2218945cd886fe360123a/ymusic/8e58/5b5e/8fb8/b20a722e3886bd8714f20a96b297a665.mp3:1 GET http://m10.music.126.net/20151206151707/9341332af6b2218945cd886fe360123a/ymusic/8e58/5b5e/8fb8/b20a722e3886bd8714f20a96b297a665.mp3 net::ERR_CONNECTION_REFUSED