xfangfang / wiliwili

第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上
https://xfangfang.github.io/wiliwili
GNU General Public License v3.0
3.19k stars 146 forks source link

部分api无法正常请求,web cookie需要自动刷新 #96

Open sekaiacg opened 1 year ago

sekaiacg commented 1 year ago

获取的cookie存在有效期,如果过期,部分api无法正常请求 需要在即将过期/过期后刷新cookie

点赞/投币会报告401错误 7c2498eb500e08aa

我搜了下,有相关api项目,比较复杂 https://github.com/SocialSisterYi/bilibili-API-collect/issues/524

xfangfang commented 1 year ago

这个应该不是或者不仅仅是刷新cookie的问题,如果cookie不刷新按理来说应该直接退出登录的。我测试即使是新扫的二维码也存在问题。

修改: 修改扫码登录的api到目前pc端使用的api上,看返回的信息有效期应该是半年。新的接口允许在手机app端远程退出。

未解决的问题:

  1. 保留了扫码登录返回的 refresh_token 但是并没有找到办法去抓到pc端的刷新请求,所以暂时没有实现。
  1. 同一个设备重复登录,在手机app端会被当成两个设备。

登录过程中生成了一系列指纹用来标识用户,目前的登录逻辑并不是和pc端严格一致,有一些cookie值不知道是怎么生成出来的,据说B站使用了这个仓库:https://github.com/fingerprintjs/fingerprintjs

sekaiacg commented 1 year ago

这个应该不是或者不仅仅是刷新cookie的问题,如果cookie不刷新按理来说应该直接退出登录的。我测试即使是新扫的二维码也存在问题。

修改: 修改扫码登录的api到目前pc端使用的api上,看返回的信息有效期应该是半年。新的接口允许在手机app端远程退出。

未解决的问题:

  1. 保留了扫码登录返回的 refresh_token 但是并没有找到办法去抓到pc端的刷新请求,所以暂时没有实现。
  • 根据上面的说明确实可以通过逆向wasm的方式按照web端来刷新,不是很懂逆向:RSA算法 SHA256哈希 需要找到其他算法参数与公钥。找到了一个类似的项目,不知道B站的是不是从这个改来的:https://github.com/Harzu/wasm-rsa
  • 也可以通过wasm2c来加载,但是貌似有一些浏览器的调用需要重新实现一下。
  • 另一个方法是等pc端刷新时抓包看看pc端是如何刷新cookie的,但是貌似短时间不刷新。或者有其他的办法,可以琢磨琢磨。
  1. 同一个设备重复登录,在手机app端会被当成两个设备。

登录过程中生成了一系列指纹用来标识用户,目前的登录逻辑并不是和pc端严格一致,有一些cookie值不知道是怎么生成出来的,据说B站使用了这个仓库:https://github.com/fingerprintjs/fingerprintjs

666,作者加油

xfangfang commented 1 year ago

我不准备研究这个问题了,如果有其他人有需要可以看一看上面的内容来继续搞一搞