關於Bilibili被限速的問題

其實是否代理被限制了,
在設定填上另一台中國大陸的Proxy,
速度馬上就上來了,
可能Bilibili已經知道Unblock Youku的存在,
但是它可能不想直接封鎖,
所以用一些手段限制Unblock Proxy用戶的速度。
我留意到用Unblock的Proxy取得影片連結時,
收到的連結是海外伺服器ws.acgvideo.com而且結尾帶有rate=100或者rate=200參數,
但改用別的Proxy收到的是中國伺服器cn-xxxxx-cmcc.acgvideo.com而且結尾不帶rate參數。
再用這些連結下載測試,
發現只要把rate參數刪除即使是海外伺服器ws.a cgvideo.com一樣可以滿速。
所以關鍵不是回傳那台伺服器,
(當然如果伺服器路徑太長還是有點,
但是Bilibili的伺服器頻寬不差不倒霉理論上流暢播放不難)
而且連結是否帶有rate參數。
試想想為什麼Bilibili回傳給Unblock Proxy用戶都是海外伺服器連結,
而不是中國用戶以及用其他用中國Proxy的海外用戶那樣回傳中國伺服器連結。
可以推論Bilibili已經記住Unblock的Proxy,
只是不直接禁止而是回傳限速的連結讓Unblock Proxy用戶知難而退,
而大部分海外用戶都是用Unblock的代理才會產生海外用戶限速的錯覺,
但事實上限速的只有Unblock Proxy用戶。
即使是海外用戶,
只是把代理改掉速度就會上來。

这个可能不同IP不一样,楼主能分享IP测试一下吗?刚才用我家里的代理试一下发现更慢,估计是因为我家位置吉林延边比较偏远的缘故。

這是我上網隨意找的,
剛剛再試還能用。
111.13.136.46:80
類型是HTTP,
填入Unblock設定裏即可,
如果Proxy沒掛掉就能比Unblock的代理快。
只是這種代理非常不穩定,
必須定期找新的代理更換。

刚才试了一下确实用这个IP比较快一点,不过这种IP也就是个人用用而已吧,一旦被发现立刻就封掉就用不了了。

但是Unblock的Proxy已經被限速,
除非你忍受限速否則一定要找別的Proxy使用。
而且我認為Bilibili應該不主動封用代理瀏覽的海外用戶,
如果要封掉第一一定是Unblock Youku。
但是對這種海外用戶施加限制是肯定的,
在Unblock Proxy已經被限制的情況下只能找別的代理配合Unblock Youku插件使用。
用Unblock Youku不一定要用它的代理服務,
特別是現在Unblock Youku這麼有名時只能配合其他代理使用。
Wiki中也有說明串流影片是不會被代理的,
只是一些數百kb的驗證IP頁面才被代理,
亦因為要代理的流量很少Unblock Youku才能一直提供代理服務的。
而用第三方代理可能比官方稍慢,
但數百kb資料慢不到那裡,
而在之後就可以全速串流影片,
在Unblock Youku解決回傳限速連結前只能靠第三方代理配合使用。

忘記分享一下我找到中國Proxy的網站。

刚刚在其他地方看到的随便转过来
我猜是不是因为代理过后被认为是离线缓存所以限速了

由于用户量增长太快,今年以来,b站服务器和带宽的负载越来越捉襟见肘。为了保证所有人的观看体验,我们从9月8日起进行了带宽的再次升级,并对高峰时期(晚上8点至12点)的视频离线缓存进行了限速。目前带宽升级工程已经完成,但在高峰时期我们依然优先保证在线观看。预计本周内将对高峰期的离线缓存限速进行提升。如您确有下载需要,请在非高峰期操作。今后我们也将继续优化带宽分配方案,为用户提供更好的观看体验。高峰时段(20:00-24:00)具体限速方案如下:LV6 不限|LV5 不限|LV4 1000kb/s|LV3 800kb/s|LV2 600kb/s|LV1 400kb/s|LV0 200kb/s|非注册用户 100kb/s。 注:实际下载速度受用户网络环境、网络硬件、网络服务提供商等多方面影响 。

這個我知道,
但是現在問題是如果用Unblock的代理表現比中國境內還差,
據我瀏覽貼吧等地方得知,
中國用戶的確在某些時間緩存比以前慢,
但是體驗上絕對沒有像用Unblock的代理的用戶那樣惡劣。
而且測試改用其他中國代理時速度就能提上來,
所以懷疑是Unblock被釘上是合理的。
封鎖Proxy和VPN伺服器來避免海外用戶繞過地區限制也不是第一天的事情,
而且Unblock Youku先前也試過被愛奇藝封鎖了,
Bilibili對用Unblock代理的用戶限速是有可能而且技術上絕對能做到。
其實昨天我拜託一名中國朋友在中國網絡中測試,
只要一打開Unblock Youku再瀏覽Bilibili的版權動畫,
速度便會被限制至100k,
理論上他不是海外用戶,
連結影片伺服器的IP是中國地區,
但是速度還是被限制了。
我認為不能只用能瀏覽受限制影片作為Unblock Youku能否起作用的唯一標準,
綜合我上面所述,
我認為Unblock Youku已經不能對Bilibili起作用,
用Unblock Youku並配合預設代理並不能獲得和中國用戶相近的體驗,
而這明顯與Unblock Youku的開發目標不符,
屬於需要修正的問題。

不要这么激动哈,如果真的B站像爱奇艺那样限制了unblock-youku的IP,那谁都没办法。最多就是换换IP,但是换了用不了几天立刻又给你限制了,和不换一个样子。换网上找的IP个人用用还行,当unblock-youku的服务器,那么多人在用,流量那么大,很快就能被代理商发现,直接把你ban了,所以不是好的解决办法。
能给用户好的体验是我们的目标,但是解决问题毕竟是需要时间的。
B站的问题也就最近才出现,想立刻解决也是不现实的,毕竟大家都是业余做这个东西,还有正式的工作要做,需要更多时间来解决这个问题。

我只是把問題指出來,
至少在先前討論中沒有人意識問題在那。
現在知道問題在那後,
其實都可以討論解決辦法,
短期內可以改變伺服器IP暫時解決,
但是長遠來說怎麼才能避開封鎖?
我有一個想法就是代理接入出口接點是中國的Tor網絡,
大家可以就此討論一下。
其實我發現整個問題的契機是因為在手機上用ChinaTunnel是能正常使用不限速的,
而ChinaTunnel和Unblock Youku普通模式道理上相近令我感到奇怪,
所以特意翻查ChinaTunnel代碼看看,
發現兩者有關Bilibili的部分,
分別只有一個是用域名區分是否代理,
另一是根據URL來選擇是否代理,
這根本不會造成巨大的差異。
而另外唯一的分別就是代理伺服器的不同,
才令我有先前的測試。
事實上ChinaTunnel的用戶也不少,
但是還沒有被限速,
說明Bilibili應該是人手加上限速位址,
並沒有像優酷一樣有主動偵測功能,
相信更改代理IP能解決一段不短時間,
當然長遠發展可能就要討論我上面的問題,
如果能利用P2P網絡解鎖才真正做到不會被偵測的條件。

你说的有道理,但是现在有一个方面很难解决,1,tor的速度太慢,一般情况下也就30k/s,无法满足unblock-youku的大用户需求,除非多配几个tor服务器节点。不过这个方法的确可以试试。
chinatunnel用户和unblock-youku用户量相比简直不值得一提,chinatunnel用户量仅仅5000人,用bilibili的就更少了,所以bilibili根本也不屑一个用户量这么少的app,unblock-youku有上百万人,都不是一个数量级的。

可以由用戶端接入Tor,
那便是每名用戶獨立的頻寬,
30k對於檢測頁面也不是太差(笑)。
至於ChinaTunnel還未限速問題,
我提出這一點是說明Bilibili的限制應該是人手設定,
暫時沒有主動識別功能,
如果有像優酷那樣的檢測功能,
即使少人使用也難保不會被查出,
當然改變伺服器IP能維持多久時間沒有人知道,
但我認為至少要測試一次看看是否符合成本效益,
而且同時研究長期發展目標,
才能讓這個項目能盡善盡美。

嗯,你说这个接入tor的方法倒是可以试试。

接入Tor如果運用得宜,
解鎖全球不是夢,
在中文圈內中國發展網絡影片事業比較早,
所以首先突顯地區版權問題的是中國。
但隨著網絡影片發展,
現在香港,台灣也有類似的網絡影片有地區版權限制,
而明顯在互聯網發展下這是不能避免的趨勢。
而在外文地區互聯網發展更快的地方更早就已經有這些地區限制問題,
而Unblock Youku的出現解決了傳統用代理或VPN的頻寬不足問題,
利用部分代理把關鍵需要代理的頁面代理,
而不是全域代理考驗代理的頻寬和處理能力。
但是版權網站開始懂得如何偵測代理伺服器並限制連結,
使用伺服器對客戶端架構的Unblock Youku也不能避免被網站偵測出來,
這時基於P2P的Tor能派上用場,
Tor解決了傳統伺服器對客戶端架構只有單一IP容易被偵測問題,
而且Tor的缺點速度慢也在Unblock Youku中有合理處理,
Tor亦可以為Unblock Youku解決不能處理中國以外網站的問題,
是可以一試的。
Bilibili有些台灣版權動畫我也試過接入出口接點是台灣地區的Tor網絡,
基本上成功接入是沒有問題成功瀏覽並沒有限速,
只是可能台灣的Tor用戶較少,
有時出現不能接入的問題,
反而中國和香港地區比較順利,
我想這問題也需要研究一下。

我特地测试了一下,发现不是所有番剧都会被限速在100k/s,有的还是可以满速,但有的也是被限速了。而且,即便是我换了自己用的代理服务器,情况还是一样。
另外,我还留意了一下视频的源地址,发现即便都是ws.acgvideo.com经过302跳转过来的地址,同样都是番剧,有的会加限速,有的却没有加。据说海外的用户基本上都是用这个地址。

这个也是302跳转过来的,但却加了限速。

然后我发现一个有趣的事情:在开启插件的情况下,如果视频地址是bangumi.bilibili.com开头的,那是没有限速的。相反如果是以www.bilibili.com开头的全部都有限速。

总结下来就是几点:

  1. 速度慢应该跟代理服务器被盯上没有太大关系(否则我用自己的服务器都是这样那怎么解释呢?)
  2. 并非所有ws.acgvideo.com的302跳转就会一定限速,但至于什么情况会限速就真不清楚了

我用第三方代理後便不會解析到ws.acgvideo.com了,
全是cn-xxxxx-cmcc.acgvideo.com的,
即使是非版權的普通影片也是,
所以才有上面的猜想。
現在看來好像不同地區有些差異,
先回報我是澳門地區的,
DNS改用Google DNS 8.8.8.8,
同時能否請你用一下ChinaTunnel並在Bilibili客戶端的測試功能看看影片伺服器是ws.acgvideo.com還是cn-xxxxx-cmcc.acgvideo.com的,
因為我就是因為ChinaTunnel能不被限速才開始研究整個問題。
先說明一下只要我用非Unblock的中國代理配合Unblock Youku後便不會再返回ws.acgvideo.com
看看不同海外地區是否有差異。
還有那個rate參數在302前已經有,
相信是從interface.bilibili.com回傳地址時已經加上,
這應該和所用代理有關。
補充:
你的代理是否匿名代理,
我一直測試的代理都是超級匿名,
只有超匿代理才不會暴露連接被代理過。
(當然超匿不能解決單一IP過多連結問題,
多人長時間使用後還是會暴露,
這可能只有Tor才能真正解決。)
我最好奇的是你那邊返回的是ws.acgvideo.com
理論上如果能準確代理interface.bilibili.com後返回的一定是cn-xxxxx-cmcc.acgvideo.com不論你原IP為何。
但是Unblock被釘上我還是懷疑的,
只有這個原因才能解釋到為什麼在中國境內使用Unblock Youku反而被限速至100k,
不使用時可以保持合理的速度。
(還是受Bilibili公告中高峰時間限速影響,
這在我測試時都一樣,
但我是LV.4影響不大,
而且離峰時就不限了。)

我确实能够正常代理interface.bilibili.com,可以看到remote address是指向代理服务器的,但是是plain proxy,返回的结果也含有限速100的参数。有可能是bilibili的api检测到你使用了代理,然后就在地址后面加上参数。
下面的结果都是来自同一个视频,可以看到里面返回的结果都是ws.acgvideo.com

这个是使用代理的,后面全部加了参数rate=100

同样的地址关闭代理后再刷新,后面的rate=100换成了rate=0

至于chinatunnel,因为我的手机没有root,这里引述一下别人的回复

但如果我没记错的话,china tunnel使用的不是单纯的 http proxy,而是一个socks+http代理(之前我们在讨论QQ音乐安卓版的时候就有谈过)。这样一来,B站没能发现你使用了代理,于是就给你来了一个cmcc开头的地址。
不过话说回来,如果确实是B站检测到你是在使用代理的话,你怎么换地址都没用,除非把代理换成socks代理。但这样的话工程量会很大,而且会波及所有用户,更何况为了一个B站就这么做确实不值。

chinatunnel确实是http+socks代理的方式。

ChinaTunnel是使用HTTP-Relay來代理http連接,
用Shadowsocks來代理https和其他TCP連接的。
這在我先前查閱代碼已經發現,
代理interface.bilibili.com部分沒記錯應是HTTP-Relay的,
因為現在客戶端除了app.bilibili.com是有https連接外其他連結都是http的。
不過這不是重點,
重點是我之後測試用的是SSL HTTP-Relay代理伺服器(和Unblock官方類型一樣),
測試是得出上述結果的。
而且理論上只要代理是超匿沒有亂改封包,
在伺服器端看起來和代理自發沒二樣,
技術上HTTP-Relay都能做到只是代理伺服器本身設置的問題。
我上面建議過用Tor取代設立代理伺服器等方式,
用的就是Socks協定,
經過愛奇藝和Bilibili二起事件,
不用考慮一下這建議?
如果再有更多網站封鎖Unblock Youku,
那Unblock Youku存在還有意義。
當然只為Bilibili而修改架構不符成本效益。
但Bilibili事件預視有這個趨勢發展,
如果在發生大規模封鎖時才考慮修正,
我想不是明智的選擇。
補充:
理論上從單一連結來說只有透明和普通代理才會讓伺服器知道代理的存在,
而我認為Unblock的代理也是超級匿名代理,
只是太有名才被記下IP,
如果代理能做到真正匿名那理論只有通過該IP的行為判斷是否作出代理行為,
例如單一IP過多連結數等。
以Unblock Youku現有技術已經能做到對伺服器相對匿名的,
但是一直是同一IP就不能做到絕對匿名。

用这种方法其实从长远来讲也不失为一个不错的选择,之前也曾经考虑过用类似代理爬虫那种自动抓取代理的,但后来好像没了回事。不过现在插件现在也可以支持socks,如果附加这个Tor的功能兴许能行,但代码恐怕原作者没那么有空去写了……