09
2025
04
16:55:50

共享 B 站大会员的油猴脚本

之前网上冲浪的时候无意中看到过一个所谓的 “B 站大会员解析”, 实际上是通过服务器端共享的 Cookie 去访问获取视频链接的接口, 解析出完整的视频链接替换掉网页的试看视频.

于是直接找同学分享给我了一个大会员账号的 Cookie, 尝试复刻出这个 “解析脚本”.

这样不会污染别人的历史记录和推荐, 也可以用自己的账号发送弹幕和评论.


首先是直接 F12 抓包找到了番剧解析出视频直链的地址, 先用 Fiddler 来进行了一个 proof-of-concept 来确定这个方法现在还能用.

在 Fiddler Script 中编写非常简单的脚本就能替换对应请求的 Cookie.

1
2
3
4
if (oSession.uriContains("pgc/player/web/v2/playurl")) {
   oSession.oRequest.headers.Remove("Cookie");
   oSession.oRequest.headers.Add("Cookie", "xxx");
}

发现这样是可行的, 直接就可以用自己的账号看大会员专属视频了, 但要一直开着 Fiddler 看 B 站确实是不太方便, 所以打算把这个功能写成油猴脚本: https://gist.github.com/lyc8503/614f9d62c1b00175867fe0efc93c374f (有油猴的话点进去直接点击 Raw 就能安装了)

油猴本身没有提供拦截修改 Http 请求的功能, 所以只能自行替换劫持 XHR 的 Api 来进行, 代码类似于这样.

1
2
3
4
5
6
7
8
const oriSend = XMLHttpRequest.prototype.send
XMLHttpRequest.prototype.send = function() {
   if (this._url.includes("pgc/player/web/v2/playurl") && this._url.startsWith("//api.bilibili.com")) {
       // Do your own things here!
   } else {
       oriSend.apply(this, arguments);
   }
};

我这里选择了使用 GM_xmlhttpRequest 来发起真正的请求, 可以通过传入 anonymous 参数删掉原有的 http-only Cookie 并写入自己的 Cookie.

B 站这里还对 Referer 进行了检查, 对于油猴来说也不是问题, 直接传入 Referer 到 headers 参数即可.

1
2
3
4
5
6
7
8
9
10
11
12
GM_xmlhttpRequest({
   method: this._method,
   url: "https:" + this._url,
   anonymous: true,    // 不携带原有 Cookie
   headers: {
       "Cookie": vip_cookie,   // 使用大会员 Cookie
       "Referer": location.href
   },
   onload: (args) => {
       this.onload(args)
   }
})

不过 GM_xmlhttpRequest 的 API 与原本 XMLHttpRequest 的 API 还是有所不同, 比如要将获得的响应体结果放入 xhr 对象中, 要在 xhr 的 getAllResponseHeaders 调用时返回正确的结果. (否则 B 站的 js 会报错)

通过不断打断点和单步步入可以找到所有出现问题的 API 并修好, xhr 中的 responseText 等一些属性没有 setter 所以不能修改, 可以用下面这种方法强行覆写.

1
2
3
Object.defineProperty(this, 'statusText', {
   get: () => args.statusText
})

最后获取的响应中, 还有 need_vip 用于指示某个分辨率是否为大会员专属, 如果不修改就只能用 1080P 或以下的清晰度观看, 选择更高的分辨率还是会弹出购买大会员弹窗. (因为其他的接口返回的信息表明我并不是大会员)

不过既然都已经劫持了请求, 直接查找替换即可解锁所有分辨率.




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/10261.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: