關於Bilibili被限速的問題

可以由用戶端接入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的功能兴许能行,但代码恐怕原作者没那么有空去写了……

所以我就提出建議,
而且也可以由有興趣的人在Unblock Youku和Tor的基礎上再開發,
我只是給一個契機。
利申:不懂軟件開發只是網絡知識比較了解的普通人,
所以由我開始開發是沒戲的。

剛才查到一點,
如果你是瀏覽bangumi.bilibili.com
那返回影片連結的Url不是http://interface.bilibili.com/playurl,
而是https://bangumi.bilibili.com/player/web_api/playurl。
或者這能解決你的問題。

服务器换成动态IP,再弄个DDNS解析,是否可以防止IP被ban呢?不过可能成本有点贵?

這個可以有(大老師樣)。
不過DDNS會有延時問題,
建議接兩條線路一固定一動態,
把預設路由設為動態線路那伺服器連外連線便會固定在動態線路,
而伺服器依舊可監聽固定線路的連入連線,
不怕IP切換時找不到伺服器。

DDNS的延時具體有多久呢?
個人感覺1min內就沒太大問題。
IP像個人用戶的網路一樣不固定,IPS服務商可能半天或者一天給你一換,或者自己斷開重連IP也可以變,這樣的話視頻網站就很難做IP的黑名單了,唯一的問題就只存在DDNS的延時問題。除非視頻服務商限定一個IP可驗證的用戶數量或者直接通過網址查詢網站并ban伺服器IP,那可就真的無解了。

事情可能没这么简单,你从哪里能搞到DDNS啊?现在国内的VPS商没有一家可以提供DDNS服务器的,即便是你在私人家里搭建服务器,现在很多私人家里连公网IP都没有,大陆不像国外,接宽带就给你一个公网IP,大陆80%以上的家庭,你接了宽带也不会给你公网IP,都是通过NAT共享上网的,所以从远程直接连到私人家庭网络不太可能的,架设稳定的服务器就更不用谈了。

动态域名解析服务不是有很多嘛。。我看过vps服务器。。共享IP(动态?)的套餐也是有的……所以我就提了这个设想……没考虑太深,毕竟我也只是懂些皮毛而已。如果是真的很难实现的话,当我在做白日梦好了……
不过,前面讨论的P2P方式好像不错,如果开发一个(基于tor?)软件的话,那么有可能在全球范围内破解区域限制了。当然,这个也很可能只是一个白日梦而已……但我还是希望有人能实现它……

我说的不是DDNS解析,而是怎么动态换IP,国内的VPS或者国际上的VPS基本都没有动态换IP的这项服务。Tor的话可行,但是大陆内部比较稳定的节点比较难找,再就是连接的是比较稳定的节点,但是可能是一个蜜罐陷阱,这样unblock-youku的数据发过去,用户信息的安全性很难保证。如果一旦出了安全问题可能谁也承担不了这个责任。

好吧……可能是我理解太浅了,我目前的解决方案是用bilibilibooster直接强行提速,无视限速规则。但是这个软件并不对所有用户生效。

其实不是没有办法,暂时替代方案就是在访问ws.acgvideo.com的时候把后面限速的参数改了。目前据我所知应该有这类插件能够实现改http参数的,利用的基本是一些302跳转。

DNS TTL好像最少設定是一小時,
真要用動態IP還是要接多條固定IP的,
下面有人說不一定能取得公網的動態IP,
我反而認為如果能接入公網的固定IP,
那樣動態IP是否公網根本不是問題的。
不過這可能沒有租用的VPS能做到,
可能需要自設伺服器。