跳到正文
NapCatQQ Desktop使用文档
远端与部署

SnowLuma 扫码登录

打开扫码窗口、刷新二维码、确认手机登录,并处理远端图形会话与回退入口。

阅读位置开始阅读阅读进度 0%

SnowLuma 会保留 QQ 的图形界面,所以登录时本来需要你打开远端桌面,找到 QQ 的窗口去扫码。简化扫码帮你省掉了这一步:它从 QQ 原本的登录界面里把二维码抓出来,直接显示在 Desktop 里。你照样用手机 QQ 扫码确认,只是不用一直开着远端桌面了。

1. 确认主机满足条件

运行方式 取码依赖 取不到码时
Windows 原生 UIA 定位登录控件、单窗口捕获;QQ 和扫码辅助在可用的桌面会话里 QQ 原窗口
Linux SSH 原生 Python 3、AT-SPI、X11、可用的会话 D-Bus VNC / QQ 图形窗口
官方 SnowLuma Docker 容器内同用户、同显示环境下的无障碍与窗口捕获 VNC

自己做的 Docker 镜像只保证能用 VNC 登录,不一定带有官方镜像里那套扫码辅助环境。

简化扫码默认是开着的;如果你以前手动关掉过,会继续保持关闭。开关在 Bot 的「配置 → 高级」里,名字叫「Windows 简化扫码(全局)」或者「简化扫码登录(全局)」。名字里带着「全局」,说明它会影响同一类运行环境下的所有 Bot。

2. 启动 Bot,打开扫码窗口

  1. 在 Bot 配置里核对 SnowLuma 底座和运行主机,保存。
  2. 启动 Bot,等 QQ 和 SnowLuma 都起来。
  3. 点卡片上的「扫码登录」。只有在你打开扫码窗口的时候,Desktop 才会去抓取二维码。
  4. 第一次打开时,扫码辅助会把 QQ 从账号选择页或者快捷登录页切换到扫码页。放心,它不会替你点快捷登录。
  5. 用要登录的那个 QQ 号的手机端扫码,然后在手机上确认。

扫完码以后不要去连点刷新。界面识别到已经扫码时,会自动停止抓图、禁用刷新按钮,等你在手机上确认。登录成功后,二维码会被清空,扫码辅助也会退出。

如果 QQ 的主界面已经出来了,但 SnowLuma 还没确认账号,会显示「等待 SL 确认」。这时候稍等一下,等协议端那边更新状态就好。

3. 二维码过期或手机取消了

  • 二维码过期了:在扫码窗口里刷新一下,扫新的二维码。
  • 手机上点了取消,想重新扫:把扫码窗口关掉,再重新打开。
  • 已经扫了,但一直在等:看看手机上是不是还有一步确认没点。已经扫过的二维码是不能强制刷新的。
  • 提示扫码辅助清理异常:按提示改用 QQ 原窗口或者 VNC 来登录。

关闭扫码窗口、切换到别的 Bot、隐藏扫码页、关掉这个功能或者停止 Bot,都会取消抓图,并清空二维码图片。

改了开关,当前 QQ 没反应

开关是在下一次冷启动 QQ 时才去准备环境的,它不会自动重启正在运行的 QQ 或容器。

所以改完开关后,找个合适的时间把对应的 Bot 停掉,再由 Desktop 重新启动。在 Linux 上,如果已经在运行的 QQ 有一个可用的无障碍会话,打开扫码时可以直接绑定上去;但要是会话 D-Bus 已经失效,那还是得重启 Bot。

Docker 也是一样,只在冷启动受支持的镜像时准备环境,不会为了抓个二维码就去重建正在运行的容器。不管扫码成功还是取消,都不会删掉 QQ 的启动包装和挂载目录。

取不到码,按顺序查

  1. Windows 远端: 目标用户登录桌面了吗?桌面解锁了吗?是不是有好几个会话同时开着?先按 Windows 管理 让工作进程就绪。
  2. Linux: 用的是 X11 吗?Python 3、AT-SPI 和会话 D-Bus 都能用吗?如果是 Wayland,或者缺依赖,直接改用回退入口会更快。
  3. QQ 窗口: QQ 窗口是不是被最小化了、被别的窗口挡住了,或者登录界面的布局不兼容?把窗口恢复出来再试,还不行就用原窗口 / VNC。
  4. 刚开启功能: 对应的 QQ 重启过了吗?打开开关不会帮你联网补装缺少的依赖,也不会帮你重启 QQ。

二维码只通过私有通道保存在内存里,不会写进文件、日志或者浏览器缓存,也不会为了取码去开新的公网端口。不过二维码本身就等于一次有效的登录凭据,千万别贴到公开的 Issue 里。

如果你希望 Bot 掉线以后,能由另一个 Bot 把重登二维码发给你,见 值守中的同机互助。这个功能还需要 ncd-watch、管理员和互助连接,单独打开简化扫码是不会给你发通知的。

NapCatQQ Desktop · GPL-3.0下载 Windows 版 ↗

输入关键词,搜索全部教程与功能说明。

↑ ↓ 选择 · Enter 打开 · Esc 关闭本地全文搜索