BBDown 扫码登录失败Arg_KeyNotFound 与 HTTP 400 报错的 5 步排查指南【免费下载链接】BBDownBilibili Downloader. 一个命令行式哔哩哔哩下载器.项目地址: https://gitcode.com/gh_mirrors/bb/BBDownBBDown 是一个命令行式哔哩哔哩下载器支持番剧、课程、普通视频解析下载、弹幕字幕抓取与二维码登录。本文专门解决一类高频故障执行BBDown login或BBDown logintv后二维码能正常显示但随后抛出Arg_KeyNotFound、KeyNotFoundException或 HTTP 400 错误程序直接退出导致无法获取SESSDATA或access_token。下面带你先确认环境、再定位根源、最后分步修复。症状与自查先花 2 分钟确认这些信息排查前先记录以下运行环境信息后面无论是自助解决还是反馈给维护者都用得上操作系统与版本Windows 10/11、macOS、Linux 发行版BBDown 版本与安装方式dotnet tool安装还是 Release 下载的二进制执行的完整命令BBDown login还是BBDown logintv报错的完整原文典型报错表现有这几种你可以对号入座Arg_KeyNotFound: The given key data was not present in the dictionary. KeyNotFoundException: ... System.Net.Http.HttpRequestException: Response status code does not indicate success: 400 (Bad Request)另外两种不算崩溃、但结果相同的软失败二维码生成后长时间停在扫码成功, 请确认...始终不输出登录成功: SESSDATA提示二维码已过期, 请重新执行登录指令.重新执行后依然复现自查小动作先手动在浏览器里打开 B 站确认账号本身能正常扫码登录排除账号与网络大环境的问题再回来处理程序。根源剖析为什么二维码能显示登录却失败BBDown 的扫码登录源码位于 BBDown/BBDownLoginUtil.cs分三步走理解它就能看懂每一类报错从哪里来向passport.bilibili.com请求生成二维码地址拿到qrcode_key本地渲染qrcode.png并在控制台打印二维码每 1 秒轮询一次poll接口根据返回 JSON 中的code判断状态86101等待扫码、86090等待确认、86038二维码过期其他值视为登录成功并解析出SESSDATA打个比方二维码就像一张限时取货凭证程序每隔一秒问一次货好了没。而Arg_KeyNotFound的含义是——程序去 JSON 里找data这个抽屉发现抽屉没了。这不是你操作的问题而是仓库货架被重新摆放过B 站接口返回的 JSON 结构或状态码与旧版 BBDown 里写死的解析逻辑对不上了。接口一旦调整字段旧版本读取data.code或data.url时就会抛KeyNotFoundException外层 HTTP 400 则是服务端直接拒绝了不合规的请求参数。所以结论很明确报错的根源大概率是BBDown 版本落后于 B 站接口其次是网络链路干扰。这两类原因决定了下面排查顺序——先升级再查网络。分步排查与解决按顺序执行一般第 1~2 步即可修复第 1 步先确认版本再升级最快解法先查看当前版本BBDown --version如果用的是dotnet tool安装直接升级到最新版dotnet tool update --global BBDown如果是下载的 Release 二进制重新获取最新版本覆盖安装即可。升级后重新执行BBDown login如果升级后扫码能走完扫码成功 → 登录成功: SESSDATA...的完整流程问题即已解决。登录成功后凭证会自动保存到程序同目录下的BBDown.dataTV 账号为BBDownTV.data之后下载会员内容无需重复登录。第 2 步用 --debug 打开调试日志看清真实报错如果升级后仍失败先带--debug再跑一次把完整日志留存BBDown --debug login调试日志会输出每一次请求的 URL 与响应内容见 BBDown.Core/Logger.cs。重点看轮询接口的响应里有没有data字段、code是多少如果是 400看请求 URL 与参数是否完整第 3 步检查网络链路若日志显示请求超时或返回异常页面多半是网络问题确认能正常访问https://passport.bilibili.com与https://passport.snm0516.aisee.tvlogintv依赖后者WiFi 环境下注意是否有代理、防火墙或 DNS 限制可以先关闭代理再试换用 4G/5G 热点交叉验证一次就能区分本地网络问题还是账号/接口问题第 4 步绕过扫码手动传 Cookie 或 Token 验证下载链路如果登录链路暂时走不通、但你急着下载可以绕开扫码直接注入凭证BBDown -c SESSDATA****** https://www.bilibili.com/video/BV1qt4y1X7TWTV 端则使用BBDown -tv -token ****** https://www.bilibili.com/video/BV1qt4y1X7TW若手动传凭证能正常下载说明问题确实只卡在登录环节继续回到第 1~3 步处理若连手动传凭证也失败则问题在下载链路接口/网络而非登录。第 5 步仍不行就从最新源码自行编译以上都没解决时最后手段是基于最新代码自行构建git clone https://gitcode.com/gh_mirrors/bb/BBDown进入目录后执行dotnet build -c Release或参考项目内的 Dockerfile 了解构建方式项目基于 .NET 9混流还需本机准备 ffmpeg 或 mp4box。预防与最佳实践避免再次踩坑定期升级BBDown 这类依赖第三方接口的工具接口一变旧版就会失灵。养成dotnet tool update --global BBDown的习惯比出问题时再排查省时间凭证文件要放对位置程序只会读取程序所在目录APP_DIR下的BBDown.data/BBDownTV.data/BBDownApp.data换目录运行会导致明明登录过却没生效配置文件兜底常用参数可以写进BBDown.config每行一个参数、#开头为注释减少手输命令出错的可能详见 BBDown/BBDownConfigParser.cs日志脱敏分享日志给别人前先涂掉SESSDATA、access_token、cookie 等敏感字段避免账号被盗用服务器模式用户以BBDown serve启动的同样建议开启--debug并在 json-api-doc.md 中对照 API 行为FAQ两个高频追问Q1提示The type initializer for Gdip threw an exception是怎么回事这是二维码图形渲染相关的异常多出现在 Linux 精简环境缺少图形库的场景。可以先安装系统图形依赖如 libgdiplus 或相关图形库或升级到最新版本的 BBDown 重试Linux 下也可借助 Docker 方式运行以避开系统库依赖。Q2BBDownTV.data登录的 token 能给 APP 接口用吗可以。把BBDownTV.data复制一份改名为BBDownApp.data放到程序同目录程序即可自动读取该access_token用于 APP 端解析。结语一句话总结处理顺序先升级再开--debug查网络必要时手动传 Cookie 验证最后才考虑自行编译。扫码登录失败十有八九是版本落后于 B 站接口变化保持 BBDown 处于最新版本、凭证文件放对位置绝大多数报错都会在第一步就烟消云散。【免费下载链接】BBDownBilibili Downloader. 一个命令行式哔哩哔哩下载器.项目地址: https://gitcode.com/gh_mirrors/bb/BBDown创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?