Closed cxw620 closed 1 year ago
确实失效了
有什么想法怎么修吗? 直接传 Cookie 还是模拟手机客户端.
传cookie不起作用,取不到1080p的格式
似乎只能做一次额外的登录了
因为当前没有漫游服务器支持 Cookie 登陆, Go 端 和 PHP 端的维护者似乎目前也没有意愿适配, Rust 端我参与维护但是没啥时间改, 积重难返属于是能用就不动, 而且需求不大, 多数还是用漫游模块的.
看看还有没有人提这问题吧, 我的建议是没有什么人提就暂且搁置掉, 先更新文案提示功能失效.
最好还是用 access_key, 模拟 APP 登陆, 服务端处理两套截然不同的身份验证比较麻烦, 要在服务端适配几乎等于重写(虽然我确实在重写, 但是还是只对 APP 来, 走 gRPC 的接口...).
我没有使用漫游服务器,我使用api.bilibili.com以及vpn服务。
cookie并没有起到实质性作用。
我不确定你是否试过。
api.bilibili.com/pgc/player/api/playurl
这个 API 我没记错的话本来就是旧版 APP 用的, Cookie 验证没用很正常. 而且这个 API 估计也活不久, 毕竟 6.40 左右就已经改成 gRPC 拿 playurl 了.
看你这么说,我换了 x/player/playurl
试了一下,cookie能取到1080P.(没用漫游服务器)
那 pgc 估计快废弃了
哦,PHP,GO,RUST的漫游都不支持这个接口
试了下云视听的access_token, 不使用漫游服务器能取到1080p。
但是,漫游服务器不承认云视听的access_key,提示未登录。
云视听是可以扫码登录,免去账号密码的输入。
否则,就得用密码或短信验证码,不太好。
因为漫游用的是 APP 端的登陆验证 API, 应该只有 Rust 端曾经有适配云视听, 但后面因为上一次 -663 问题给 deprecate 了. 而且云视听和哔哩哔哩理论上是两个东西, 会员不互通(理论上, 我没用过), API 也不一样, 也没有设备能装上云视听抓包分析.
看看还有什么 APP 是扫码登陆的, 或者如何通过 Cookie 拿 access_key...
用这个接口如何, 刚刚抓包确定 Bilibili HD 版本也是用的这个 https://github.com/SocialSisterYi/bilibili-API-collect/blob/2d86a3cc7c9598f1e05f13acfd5780f64ace7bd9/docs/login/login_action/QR.md?plain=1#L492
参考请求 param
appkey: dfca71928277209b
build: 1442100
channel: master
device: phone
mobi_app: android_hd
platform: android
具体请求参数如下 UA: Mozilla/5.0 BiliDroid/1.44.2 (bbcallen@gmail.com)
POST Form 各参数分析 | key | 示例 | 备注 |
---|---|---|---|
appkey | dfca71928277209b | ||
auth_code | *** | 来自/x/passport-tv-login/qrcode/auth_code |
|
bili_local_id | *** | 参考设备指纹 fp (fp_local, fp_remote) | |
build | 1442100 | 版本号 | |
buvid | *** | XU-Prefix BUVID, 参考设备唯一标识 BUVID | |
c_locale | zh-Hans_CN | ||
channel | master | ||
code | 留空 | ||
device | phone | ||
device_id | *** | 参考设备指纹 fp (fp_local, fp_remote) | |
device_name | HUAWEIWGR-W09 | 设备 model | |
device_platform | Android12HUAWEIWGR-W09 | ? | |
device_tourist_id | *** | 请求 /x/passport-user/guest/reg 获取 |
|
disable_rcmd | 0 | ||
dt | *** | 签名? 算法未知 | |
extend | 留空 | ||
local_id | *** | XU-Prefix BUVID, 参考设备唯一标识 BUVID | |
login_session_id | *** | 算法未知 | |
mobi_app | android_hd | ||
platform | android | ||
s_locale | zh-Hans_CN | ||
spm_id | from_spmid | ||
statistics | {"appId":5,"platform":3,"version":"1.44.2","abtest":""} | ||
ts | 1698601768 | ||
sign | *** | APP 端 API 通行的签名算法, 参考APP API 签名与鉴权 |
拿到 access_key 后, 请求漫游服务器的时候 appkey 也要是 dfca71928277209b, 而且走 app 的那个接口而不是 /pgc/player/web/playurl
了.
我下了HD试了一下,hd的access_key可以用于/pgc/player/api/playurl
那就用hd扫码获取access_key了。
因为漫游用的是 APP 端的登陆验证 API, 应该只有 Rust 端曾经有适配云视听, 但后面因为上一次 -663 问题给 deprecate 了. 而且云视听和哔哩哔哩理论上是两个东西, 会员不互通(理论上, 我没用过), API 也不一样, 也没有设备能装上云视听抓包分析.
看看还有什么 APP 是扫码登陆的, 或者如何通过 Cookie 拿 access_key...
云视听官网是有安装包的,能安装使用。
由于
https://passport.bilibili.com/login/app/third?appkey=27eb53fc9058f8c3&api=https%3A%2F%2Fwww.mcbbs.net%2Ftemplate%2Fmcbbs%2Fimage%2Fspecial_photo_bg.png&sign=04224646d1fea004e79606d3b038c84a
已经失效, 导致无法获取 access_key, 漫游港澳台番剧功能可能失效.代码逻辑位于: https://github.com/msojocs/bilibili-linux/blob/master/extensions/area_unlimit/hook/common.js#L231