We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
哔哩哔哩鉴权使用的是 Cookie 中的 SESSDATA 字段,其中含有一个数字大概率是 Unix 时间戳。最近发现, Cookie 失效时间远远早于此时间戳规定的有效期(约半年)。
SESSDATA
在抓取登录请求时发现 API 返回了一个名为 refresh_token 的字段,由此推测是近期更改了鉴权机制设计,SESSDATA 作为临时 Token,使用 refresh_token 作为刷新令牌。
refresh_token
后续考虑研究 refresh_token 机制并且在 bili-auth 中模拟,以避免令牌失效。
The text was updated successfully, but these errors were encountered:
能否尝试接入直播间弹幕库代替私信获取,需要发送随机字符串以鉴权
Sorry, something went wrong.
biliup-rs 提供了一套登录和刷新token的工具,可以作为实现的参考或者考虑直接用subprocess调用
subprocess
@gin3715 好的,谢谢分享。之后我会参考的。
目前的解决方案是定期检查 cookie 是否需要刷新,若可以刷新则使用 Selenium 模拟访问哔哩哔哩的主页面,在这个过程中凭据(cookies 和 refresh_token)会被自动更新。
Selenium
biliup-rs 采用的方案调用了官方的 OAuth API ,用到了一对固定的 app_key 和 app_secret,似乎是 TV 端使用的。目前官方不对个人开发者开放应用接入功能,因此只能用内部测试或者其他 app 的 OAuth 凭据。虽然比上一段提到的方案快捷方便,但考虑到凭据来源的问题,这作为备选方案。
42e802a
No branches or pull requests
哔哩哔哩鉴权使用的是 Cookie 中的
SESSDATA
字段,其中含有一个数字大概率是 Unix 时间戳。最近发现, Cookie 失效时间远远早于此时间戳规定的有效期(约半年)。在抓取登录请求时发现 API 返回了一个名为
refresh_token
的字段,由此推测是近期更改了鉴权机制设计,SESSDATA
作为临时 Token,使用refresh_token
作为刷新令牌。后续考虑研究
refresh_token
机制并且在 bili-auth 中模拟,以避免令牌失效。The text was updated successfully, but these errors were encountered: