ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

BiliTools 登录机制全解析:扫码 / 短信 / 密码登录、Cookie 导入与风控避坑指南

BiliTools 登录机制全解析:扫码 / 短信 / 密码登录、Cookie 导入与风控避坑指南 桌面应用音视频【免费下载链接】BiliTools本项目已停止维护。项目地址https://gitcode.com/GitHub_Trending/bilit/BiliTools点击查看免费下载本文围绕 BiliTools基于 Tauri 的哔哩哔哩桌面工具箱的账号登录功能展开系统性讲解三种登录方式的成功率差异与适用场景、登录过程的“模拟 Chrome”底层原理、登录后账号后台显示“Chrome 浏览器”与“未知设备”的原因以及通过 SQLite 数据库直接导入官方 Cookie 的完整实操步骤并补充登录后 Cookie 刷新、退出登录与风控防护的工程实现细节帮助你在实际使用中选对登录方式、规避风控并安全地管理账号凭据。一、登录方式总览成功率与适用场景在 docs/guide/login.md 中项目官方给出的登录方式成功率排序为扫码登录 短信登录 密码登录这一排序并非偶然而是与哔哩哔哩 Web 端风控策略的强度直接相关登录方式相对成功率是否依赖二次验证当前状态说明扫码登录最高需要手机端扫码确认推荐首选最贴近真实浏览器操作短信登录中等需要图形验证码 短信验证码可用但会触发 “未知设备” 提示密码登录最低需要图形验证码 密码 RSA 加密目前因风控问题暂不可用扫码登录由于整个过程几乎等同于“在 Chrome 中打开登录页并扫码”与真实用户行为一致因此成功率最高。短信登录需要先通过极验Geetest图形验证码再输入短信验证码成功后会返回refresh_token并写入本地 Cookie 库登录后账号后台会提示 “未知设备”。密码登录当前版本 src/services/login.ts 中保留了完整实现RSA 公钥加密密码 极验验证码但官方明确说明“密码登录目前因风控问题暂不可用”即后端风控会拒绝该方式不建议再依赖它登录。[!TIP] 如果你在官网已经登录过最稳妥的途径其实是直接导入官方 Cookie见下文第三节完全绕开以上三种方式的风控差异。二、底层原理登录本质是“模拟 Chrome 浏览器”BiliTools 的登录逻辑完全基于哔哩哔哩的Web API因此登录过程实质上是模拟 Chrome 浏览器的登录过程。这一点在 docs/guide/login.md 中有明确说明并且在前端与后端的实现中都有大量佐证2.1 固定的浏览器指纹与请求头在 src-tauri/src/shared.rs 中项目硬编码了与浏览器一致的User-Agentpub const USER_AGENT: str Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36;同时 Headers::new() 会为所有请求注入默认的Referer: https://www.bilibili.com/与Origin: https://www.bilibili.com并且在每次登录/刷新 Cookie 成功后调用HEADERS.refresh()将数据库中所有 Cookie 重新拼接为Cookie头见 shared.rs。正因为请求指纹被伪装成了 Chrome 浏览器登录后你在哔哩哔哩账号后台看到的登录设备提示很大概率是 “Chrome 浏览器”。2.2 登录前的环境准备buvid / b_3、b_4、_uuid 与风控票据在真正发起登录请求前后端会先完成一组“模拟浏览器”的前置步骤见 src-tauri/src/services/login.rsget_buvid()先请求https://www.bilibili.com首页从响应Set-Cookie头中收集buvid3等初始 Cookie再请求https://api.bilibili.com/x/frontend/finger/spi获取b_3、b_4并写入 Cookie 库login.rs。buvid3/buvid4是哔哩哔哩的匿名设备指纹模拟“第一次访问网站”的行为。get_uuid()按哔哩哔哩要求的格式生成_uuid随机段 时间戳 infoc后缀并写入 Cookielogin.rs。get_bili_ticket()用固定密钥XgwSnGZ1p对时间戳做 HMAC-SHA256 签名调用GenWebTicket接口获取bili_ticket风控票据login.rs。activateCookies()前端拿到_uuid后还会组装一份完整的浏览器指纹 payload屏幕分辨率、WebGL 显卡信息、字体列表、语言时区等见 auth.ts请求ExClimbWuzhi接口完成“指纹激活”login.ts。从源码结构可以看出登录并非“发一个请求”那么简单而是一整套浏览器环境模拟 指纹激活 风控票据的流程这也是项目把成功率优化到较高水平的工程基础。三、导入官方 Cookie数据库直写方式如果你在哔哩哔哩官方网站已经获取了 Cookie 序列可以通过编辑应用数据库的方式直接使用这些 Cookie完全跳过应用内登录。[!CAUTION]编辑数据库有一定风险请确保你知道自己正在做什么。建议先备份Storage文件再操作。3.1 定位应用数据库应用数据包括 SQLite 数据库Storage按平台存放于以下目录平台路径Windows%APPDATA%\com.btjawa.bilitools\StoragemacOS$HOME/Library/Application Support/com.btjawa.bilitools/StorageLinux$HOME/.local/share/com.btjawa.bilitools/Storage该路径由 src-tauri/src/shared.rs 中的STORAGE_PATH定义数据库以WAL 模式打开并存储为Storage文件见 src-tauri/src/storage/db.rs。3.2 操作步骤使用支持 SQLite 的数据库编辑器如 DB Browser for SQLite、SQLiteStudio 等打开上述Storage文件切换至cookies表将你在官网获得的 Cookie 序列形如SESSDATAxxx; bili_jctxxx; DedeUserIDxxx; ...拆分成键值对逐条插入数据库其余字段如path、domain等可以留空如果你知道如何获取这些字段也可以一并填入以获得更精确的匹配。3.3 数据库表结构与写入规则源码依据cookies表的结构定义在 src-tauri/src/storage/cookies.rs字段类型约束/说明nameTEXT主键非空如SESSDATAvalueTEXT非空Cookie 的值pathTEXT可空domainTEXT可空expiresINTEGER可空Unix 时间戳httponlyBOOLEAN非空secureBOOLEAN非空其中name是主键因此同名的 Cookie 只保留一行。应用内部写入时使用的是“先解析Set-Cookie字符串、再按name冲突更新ON CONFLICT ... UPDATE”的语义见 cookies.rs你手动插入时同样按name去重即可。3.4 导入后如何生效Cookie 写入数据库后应用会通过HEADERS.refresh()把库中所有 Cookie 拼成Cookie头注入后续请求见 shared.rs。也就是说只要 Cookie 有效应用即可直接解析对应账号可访问的资源。参考讨论见仓库官方 Discussion #152文档中提及的外部链接此处不展开。[!NOTE] 哔哩哔哩的SESSDATA等关键 Cookie 通常设置了HttpOnly与过期时间。手动插入时建议一并填入expiresUnix 秒级时间戳与httponly 1避免浏览器语义不一致导致部分接口校验失败。四、登录后的凭据维护自动刷新与退出登录登录不只是“拿到 Cookie”这么简单。BiliTools 在前后端都实现了完整的凭据维护链路4.1 Cookie 自动刷新refresh_cookie哔哩哔哩 Web 登录会下发refresh_token。当接口提示需要刷新时/x/passport-login/web/cookie/info返回data.refresh为真前端会用内置 RSA 公钥对refresh_timestamp做 OAEP 加密得到correspondPath见 auth.ts请求https://www.bilibili.com/correspond/1/path并解析出refresh_csrf调用后端refresh_cookie依次完成/web/cookie/refresh与/web/confirm/refresh两个接口见 login.rs。这一流程由 fetchUser() 在每次拉取用户信息时自动触发checkRefresh()保证长期使用的账号凭据不会因过期而失效。4.2 退出登录exit后端exit()命令会携带bili_jct作为biliCSRF请求/login/exit/v2随后解析响应中的Set-Cookie头逐个删除本地 Cookie 库中的对应条目见 login.rs并刷新全局请求头。前端用户页的退出按钮调用exitLogin()后跳转回首页见 UserPage.vue。五、常见问题与风控避坑5.1 为什么账号后台提示 “未知设备”密码/短信登录目前已知会提示 “未知设备”这是因为这两种方式没有经过完整的设备指纹“养成”流程哔哩哔哩侧无法将登录行为与既有的浏览器设备指纹关联起来扫码登录由于手机端确认 完整浏览器指纹激活通常不会出现该提示。5.2 密码登录为什么不可用官方文档明确指出密码登录目前因风控问题暂不可用。虽然前端 login.ts 仍保留“RSA 加密 极验验证码”的完整调用链但哔哩哔哩侧的风控策略会拒绝这类纯 Web 模拟的密码提交。因此实际使用中请以扫码或短信为主或直接导入官方 Cookie。5.3 登录/使用中被风控怎么办登录只是起点日常解析下载同样面临风控。结合 docs/guide/risk.md 的官方建议项目本质是模拟 Chrome 向哔哩哔哩 API 请求参数大多来自抓包与社区讨论无法保证每个参数都符合接口预期因此存在被判定为爬虫的概率勾选大量任务时应用内会有提示不要一次性选择超过 30 个任务依然可能触发412 Precondition Failed及其他风控官方倡导少量多次大量内容需要下载时建议每次勾选不超过 15 个任务以最大程度保障账号安全。遇到风控的处理方式若在官网发现 “大会员权限已被限制”前往大会员页面按指引解除风控之后使用时放慢节奏若应用内报412 Precondition Failed要么等半个小时要么换 IP官方更推荐前者非 412 的其他报错虽不排除是应用自身代码问题也可按风控流程处理遇到任何风控都可向仓库提交 Issue 反馈。六、总结选登录方式扫码登录 短信登录 密码登录密码登录当前不可用短信登录可能提示“未知设备”但均不影响正常使用理解原理所有登录都基于哔哩哔哩 Web API通过固定 UA、Referer/Origin、buvid 指纹、_uuid、bili_ticket与前端指纹激活来模拟 Chrome 浏览器因此后台常显示 “Chrome 浏览器”想直接复用官网会话备份后使用 SQLite 编辑器在cookies表按name/value键值对插入 Cookie 即可其余字段可留空保持账号健康控制单次任务数量≤15 个更安全遇到 412 时等待或换 IP避免触发风控。相关文档与源码索引登录官方文档docs/guide/login.md风控说明docs/guide/risk.md安装与下载docs/guide/install.md后端登录实现src-tauri/src/services/login.rsCookie 存储实现src-tauri/src/storage/cookies.rs数据库初始化src-tauri/src/storage/db.rs请求头与 UA 构造src-tauri/src/shared.rs前端登录服务src/services/login.ts前端指纹/加密工具src/services/auth.ts用户页 UI 与登录入口src/views/UserPage.vue赞分享桌面应用音视频【免费下载链接】BiliTools本项目已停止维护。项目地址https://gitcode.com/GitHub_Trending/bilit/BiliTools点击查看免费下载相关推荐AutoClip B站登录替代方案全指南Cookie导入、账号密码与扫码登录的选型与实现原理AutoClip B站登录替代方案全指南Cookie导入、账号密码与扫码登录的选型与实现原理 本文以 AutoClipAI 智能高光提取与剪辑二创工具中的人工智能AI 应用大模型音视频短视频后端前端桌面应用BilibiliDown登录功能详解扫码登录、用户名密码登录全攻略BilibiliDown登录功能详解扫码登录、用户名密码登录全攻略 BilibiliDown是一款功能强大的B站视频下载工具支持多平台使用能够帮助用户轻松音视频桌面应用QzoneArchive登录实现解析二维码扫码、ptlogin2与WebView Cookie提取全流程QzoneArchive登录实现解析二维码扫码、ptlogin2与WebView Cookie提取全流程 QzoneArchive 是一款将 QQ 空间历史动桌面应用移动开发网页爬虫创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表