通过替换获取视频地址接口的方式, 实现解除B站区域限制;
我这里实测分辨率切换没问题。 不过,默认分辨率不就是1080p的吗?还需要再手动切换? 还有你的Chrome貌似还是50?最新都58版了,还是更新一下的好。
流暢 640×360 高清 1080×608 超清 1280×720 (預設)
我不用腳本看巨人不會看到那個按鈕 但掛上後多了一個 1080P 的按鈕
他的 event 被 uglify 了但可以追到
if ("4" == $(this).attr("value")) {
if (!q.K) return e.pause(),
e.state.mode > g.ta && e.mode(g.ta),
e.ye.load(function() { //下略
其中 q 紀錄的東西多跟身份有關,裏面有 uid 跟 name 我猜應該跟付費機制之類的有關
。。。看起来,确实有这问题。暂时只有把1080P设成默认分辨率可避免。
我打断点是打到这么一段:
change: function(b) { // 7893行
var q = this;
if (l || b == e.tb)
return !1;
if (4 == b) {
var p = e.C.status();
if (p.K)
if (0 != p.ub && 1 == p.ec || d || c)
f.c.addClass("disabled");
else
return e.pause(),
e.state.mode > g.ta && e.mode(g.ta),
"function" === typeof e.window.showVipPay && e.window.showVipPay(3),
q.value(e.tb),
!1;
else
return e.pause(),
e.state.mode > g.ta && e.mode(g.ta),
e.ye.load(function() {
e.window.location.href = e.window.location.href
}),
q.value(e.tb),
!1
} else
f.c.addClass("disabled");
clearTimeout(f.Bf);
这里面的e.C.status()是读取的https://interface.bilibili.com/player?id=cid:17417227&aid=10549653
的返回值
其中,
p.ub对应返回结果的vip
标签中的vipType
字段
p.ec对应返回结果的vip
标签中的vipStatus
字段
这个接口没有传uid之类的字段,应该是根据cookie来判断用户的,感觉要代理的话,只能服务器上代理一下这个接口才行。 或者脚本里面直接修改接口的返回值?不过这接口返回xml。。。操作起来有点麻烦~~
先把1080P设为默认分辨率来避免吧,说不定,B站过几天又改接口昵
后来又试了下,只有在代理服务器上登录的账号是大会员,默认分辨率才会是1080P
我是 redirect + Biliplus Biliplus未登入,B站有登入,沒有大會員 我的預設就是最高的 720P (超清)
((乾脆偵測沒有大會員的把那個按鈕display:none;
掉算了www
上面的程式碼是 1080P 按鈕上的 click 事件(4種解析度的 click 都是這個 function) 和你抓到的 function 看起來大同小異...
// bilibiliPlayer.min.js:396
function() {
if (f.Wa.hasClass("disabled") ||
$(this).hasClass("active")) return !1;
if ("4" == $(this).attr("value")) {
if (!q.K) return e.pause(),
e.state.mode > g.ta && e.mode(g.ta),
e.ye.load(function() {
e.window.location.href = e.window.location.href
}), f.Gd.value(e.tb), !1;
if (!(0 != q.ub && 1 == q.ec || d || c))
return e.pause(),
e.state.mode > g.ta && e.mode(g.ta),
"function" === typeof e.window.showVipPay && e.window.showVipPay(1), f.Gd.value(e.tb), !1
}
f.Gd.value($(this).attr("value"));
f.Gd.change()
}
下面是那個關鍵的 q 的結構
console.log(e.C.status() === q) // => true
console.dir(q)
{
"name": "******", // B站使用者名字
"uid": "******", // uid
"rf": "0.00",
"K": true,
"Fy": false,
"zt": true,
"vv": false,
"Bt": "Copy",
"Jy": {},
"Xy": "",
"Yy": "",
"Mn": "0",
"ev": "9f9ec29b",
"Ub": [
"//comment.bilibili.com",
"//comment.bilibili.com/rc"
],
"bottom": "1",
"ue": 3,
"ub": 0,
"ec": 0,
"Kb": 3,
"Iv": 70,
"h": {
"Uo": [],
"mode": [ 1, 1, 1, 0 ],
"fontsize": [ 0, 0, 1, 1, 0, 0, 0 ],
"color": 2,
"Mf": 5,
"input": [ 220, 5000 ]
}
}
你以前可以用这个1080P的选项么?
你以前可以用这个1080P的选项么?
以前沒注意 :sweat_smile:
感觉B站把整个代码弄得更复杂了,是不是要防止别人给返回值做手脚呀?
不知是不是新版本的问题?还是B站问题?
现在改的连超清都没了(大会员)。。。。进去就只有流畅,且按下去并没有弹出可以改的清析度
不知是不是新版本的问题?还是B站问题?
现在改的连超清都没了(大会员)。。。。进去就只有流畅,且按下去并没有弹出可以改的清析度
昨天晚上8点时还没出现这情况, 今天打开我就懵了。。。
等B站改完我再改吧?
目前版權番全部只剩流暢渣畫質
而且有些還無限肥腸抱歉...
B站在大改版?
大概是的?,先等B站改完吧
目前版權番全部只剩流暢渣畫質
而且有些還無限肥腸抱歉...
B站在大改版?
嗯, 刚用VPN试了一下, 确实是B站在搞事情。。。破攻城狮不知在搞什么鬼( ´_ゝ`)
难度破站服务器给最近那毒锁了23333, 拿流畅的镜像服务器先顶上_(:3」∠)_
不过给锁上好像并不太可能, 再等等逸站的攻城狮糊弄
@esterTion B站是不是给视频服务器也加上了区域限制?
@esterTion B站是不是给视频服务器也加上了区域限制?
五点半b站搞反外链,估计炸到自己人六点回滚了,然后顺带番剧playurl炸了
@esterTion B站是不是给视频服务器也加上了区域限制?
五点半b站搞反外链,估计炸到自己人六点回滚了,然后顺带番剧playurl炸了
一颗赛艇?,B站的破程序员,终于毒到自己身上去了
看戏传送门?:如何评价B站番剧区大量视频变成流畅画质? - 知乎
看戏传送门?:如何评价B站番剧区大量视频变成流畅画质? - 知乎
散了散了,恢复了
看戏传送门?:如何评价B站番剧区大量视频变成流畅画质? - 知乎
散了散了,恢复了
md刚说完还是炸了,气死我了
现在的接口状态
{
"accept_format": "mp4",
"accept_quality": [
1
],
"bp": 0,
"code": 0,
"durl": [
{
"length": 0,
"order": 1,
"size": 0,
"url": "http://ws.acgvideo.com/a/1c/17479267-1.mp4?wsTime=1495037091&platform=ios&wsSecret2=9a6b910ffca92e9097edd9d0ad5a8af5&oi=3400792235&rate=540"
}
],
"format": "mp4",
"from": "local",
"has_paid": false,
"result": "suee",
"seek_param": "start",
"seek_type": "second",
"timelength": 0,
"vip_status": 1,
"vip_type": 1,
"flvjsType": "flv"
}
@esterTion 应该是缓存的原因吧,大多数已经恢复了。 才刚搬好瓜子板凳,就结束了,不开心("▔□▔)/
預設 720P 回復了 (沒有那個1080P按鈕了) :blush:
1080p一点就暂停了
看巨人2时,想看1080p,不过一点就暂停了,无法切换,咋回事