后台认证与 Bilibili 登录
约 1850 字大约 6 分钟
管理员登录与会话
源码与 Portable 部署设置 ADMIN_PASSWORD 后,受保护接口使用 HTTP Basic Auth,用户名为 admin,密码来自本次运行使用的配置。浏览器访问受保护功能时会要求认证,脚本也可发送 Basic Auth 凭据。此模式不启用 Docker 的网页登录页、会话库或网页改密功能;修改部署密码后重启服务。未设置密码时,仅允许满足本机访问约束的请求。
Docker 默认启用独立的网页登录与会话管理。以下初始化、网页改密、退出及会话失效说明适用于启用了 DOCKER_AUTH_ENABLED 的部署;显式配置 ADMIN_PASSWORD 时使用部署密码登录,无需初始化。
未配置部署密码且尚未初始化时,首次访问会进入管理员初始化页。复制当前容器日志中的一次性初始化码,设置 12–128 字符密码后登录; 初始化码 30 分钟有效,重启使未使用的旧码失效。已初始化的密码保存在私有哈希库中,保留 storage 即可跨容器重建复用。
网页顶部提供密码管理、退出登录和退出所有设备。会话默认空闲 30 分钟或最长 12 小时后失效, 容器重启也要求重新登录;录制和后台任务继续由服务运行,浏览器退出不会主动停止它们。 会话失效时原地弹出登录框,保留当前页面草稿;失败的保存、上传等请求不会自动重发,请登录后确认再操作。 显式退出则返回登录页,退出前请保存草稿。其他标签页重新登录后,首次写入可能提示登录状态已更新,确认后重试即可。
网页管理密码与 Bilibili Cookie、模型 API Key 相互独立。显式 ADMIN_PASSWORD 不受网页改密覆盖; 审核员继续使用部署配置中的独立账号。API 脚本仍支持 Basic Auth,初始化码不能用作 API 密码。 忘记密码的恢复命令、HTTPS 反向代理和迁移说明见 Docker 说明。
Bilibili 账号登录
在“设置中心”→“账号登录”点击“扫码登录”,用手机 Bilibili 扫描本页二维码并在手机上确认。页面会依次显示等待扫码、等待确认和登录成功;仅确认成功后保存 Cookie。二维码过期时需重新点击申请,不会自动切换二维码;“取消扫码”会停止本次轮询。服务器和 Docker 无需桌面或浏览器,操作者只需在自己的浏览器打开管理后台。
“浏览器登录”保留独立窗口中的扫码、密码或手机号登录,窗口在运行本程序的机器打开,需要该机器具备桌面。也可继续在设置中手工填写 Cookie。网页登录后台账号与登录 Bilibili 平台是两个独立操作,后台密码不会用于 Bilibili 登录。
扫码恢复与故障处理
Docker 与无桌面部署直接使用「扫码登录」,无需在服务器安装或启动浏览器。 BiliLiveCut 后台管理员登录与手机上的 Bilibili 账号确认是两个独立步骤。
- 首次点击先查询本浏览器是否有活动任务,有则恢复;没有才申请新二维码。
- 刷新页面会查询并恢复同一浏览器、同一管理员会话的任务。二维码密钥与 Cookie 不写入 localStorage 或 sessionStorage;浏览器归属由 HttpOnly Cookie 保护。
- 临时网络错误最多自动恢复查询五次,并逐次延长间隔。随后显示「恢复状态」。 网络恢复时可以继续查询;不会自动重试申请、取消或其他写入操作。
- 启用 Docker 认证时,管理员会话失效会隐藏二维码并提示重新登录。重新登录后仅查询当前归属任务; 旧会话任务不会转交新会话,需要用户重新点击扫码登录。
- 状态分别显示申请、待扫码、手机确认、账号验证、保存、成功、过期和失败。 终态清除二维码。保存期间取消会等待真实结果,保存失败不显示取消成功。
- 创建或取消请求的响应丢失时,不假定服务器没有执行;先恢复状态再操作。
只读接口 GET /api/login/qrcode 返回当前浏览器最近的任务,或 task_id: null。 任务查询包含 expires_in(服务端剩余秒数);实际过期与凭据保存由服务端判定。 所有接口沿用管理员权限、同源与 CSRF 约束,返回 Cache-Control: no-store。
平台端的短暂网络故障、HTTP 429 和 5xx 最多重试三次固定地址的只读请求。 畸形响应、未知状态、账号验证失败直接结束任务,不重试、不修改已保存账号。
扫码任务的安全边界
扫码接口要求管理员权限,并执行同源与 CSRF 校验;启用 Docker 认证时另校验网页登录会话或凭据版本。 每个任务同时绑定已验证身份和服务端签名的短时浏览器 Cookie;仅知道任务 ID 或使用同一个 Basic 用户名,均不能读取、取消其他浏览器的二维码。 浏览器标识使用 HttpOnly、SameSite=Strict;HTTPS 下启用 Secure。服务重启后标识失效。
Bilibili 账号是全局设置,因此一次只允许一个活动扫码任务。扫码任务最多持续 10 分钟,二维码只保存在内存;未知状态、失效二维码和取消均不会替换旧 Cookie。 二维码只接受 account.bilibili.com 和 passport.bilibili.com 的 HTTPS 地址; 回调仅接受 passport.bilibili.com 或 passport.biligame.com。不跟随重定向,也不访问远端回调地址。 只有成功状态码、完整凭据和固定账号接口返回的 UID 一致时,才进入保存步骤。 接口响应有大小上限,不向浏览器返回账号 Cookie、刷新口令或异常链。
启用 Docker 认证时,浏览器管理员退出、改密或会话过期后,活动任务在下一次轮询或保存前终止。 此模式下的 Basic API 任务绑定认证时的密码版本;改密(即使改回相同密码)、重置或重新初始化 都会使旧任务失效,不在任务中保存密码。最终账号写入在认证库的短事务锁内重新核验, 与改密、重置串行:撤销先完成则拒绝保存;保存已开始则撤销等待该次写入结束。 源码与 Portable 的 Basic 模式由请求中间件校验凭据,不具备上述网页登录会话撤销机制。 失效任务需要重新登录并申请二维码。浏览器标识不能替代管理员认证。 保存开始前可取消;保存已经开始时,取消和服务关闭等待实际保存结果。 数据库事务成功后显示完成,写入失败显示失败,不把成功保存误报为取消。 数据库操作在线程中执行,避免阻塞网页事件循环。