Skip to content
New issue

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

refresh token required #6

Closed
icyux opened this issue Sep 11, 2022 · 4 comments
Closed

refresh token required #6

icyux opened this issue Sep 11, 2022 · 4 comments
Labels
enhancement New feature or request

Comments

@icyux
Copy link
Owner

icyux commented Sep 11, 2022

哔哩哔哩鉴权使用的是 Cookie 中的 SESSDATA 字段,其中含有一个数字大概率是 Unix 时间戳。最近发现, Cookie 失效时间远远早于此时间戳规定的有效期(约半年)。

在抓取登录请求时发现 API 返回了一个名为 refresh_token 的字段,由此推测是近期更改了鉴权机制设计,SESSDATA 作为临时 Token,使用 refresh_token 作为刷新令牌。

后续考虑研究 refresh_token 机制并且在 bili-auth 中模拟,以避免令牌失效。

@icyux icyux added the enhancement New feature or request label Sep 11, 2022
@7est
Copy link

7est commented Nov 27, 2022

能否尝试接入直播间弹幕代替私信获取,需要发送随机字符串以鉴权

@gin3715
Copy link

gin3715 commented Jan 2, 2023

biliup-rs 提供了一套登录和刷新token的工具,可以作为实现的参考或者考虑直接用subprocess调用

@icyux
Copy link
Owner Author

icyux commented Jan 3, 2023

@gin3715 好的,谢谢分享。之后我会参考的。

@icyux
Copy link
Owner Author

icyux commented Jan 15, 2023

目前的解决方案是定期检查 cookie 是否需要刷新,若可以刷新则使用 Selenium 模拟访问哔哩哔哩的主页面,在这个过程中凭据(cookies 和 refresh_token)会被自动更新。

biliup-rs 采用的方案调用了官方的 OAuth API ,用到了一对固定的 app_key 和 app_secret,似乎是 TV 端使用的。目前官方不对个人开发者开放应用接入功能,因此只能用内部测试或者其他 app 的 OAuth 凭据。虽然比上一段提到的方案快捷方便,但考虑到凭据来源的问题,这作为备选方案。

@icyux icyux closed this as completed in 42e802a Jan 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants