能否通过ADB利用PNG二维码图片登录Discord等桌面应用?
解决Discord移动端通过二维码链接/图片自动登录的方案
核心问题分析
Discord扫码登录的验证链接属于临时身份令牌,直接用ADB唤起APP会触发安全校验——APP默认认定链接来自摄像头扫码场景,非直接Intent唤起的请求会被拦截,因此出现“扫码时出错”提示。
可行实现方案
方案1:调用Discord深层验证Intent绕过扫码校验
Discord内部有处理验证链接的专属Intent Action,通过ADB直接调用该组件,可跳过前端扫码场景的校验:
- 捕捉验证Intent日志:
执行ADB命令监听Activity日志,同时用手机正常扫码一次,获取Discord处理验证链接的Intent信息:
日志中会出现类似adb logcat -s ActivityManager | grep "discord"com.discord.intent.action.AUTHORIZE的自定义Action,以及对应的参数格式。 - 直接发送验证Intent:
用捕捉到的Action和你的验证链接,执行ADB命令触发验证:adb shell am start -a com.discord.intent.action.AUTHORIZE -d "https://discord.com/ra/fIUSUsnlPHThLkj5ghZtCATW5hxpc7qn00KYe1iJCNw"
方案2:推送二维码图片到相册,模拟相册选择扫码
若Discord支持从相册选择二维码(多数版本提供此功能),可通过以下步骤自动化:
- 推送二维码到手机相册:
将桌面端保存的PNG二维码推送到手机DCIM目录:adb push qr_code.png /sdcard/DCIM/Camera/ - 模拟操作完成扫码:
- 用
adb shell input tap x y模拟点击Discord扫码界面的“从相册选择”按钮(坐标可通过adb shell getevent或Appium Inspector获取); - 继续模拟点击相册中推送的二维码图片,触发Discord的识别验证流程。
- 用
方案3:直接调用Discord验证API完成登录
解析验证链接中的令牌参数,调用Discord官方API完成身份验证:
- 提取验证令牌:
从你的链接https://discord.com/ra/fIUSUsnlPHThLkj5ghZtCATW5hxpc7qn00KYe1iJCNw中,提取路径末尾的字符串fIUSUsnlPHThLkj5ghZtCATW5hxpc7qn00KYe1iJCNw,这就是临时验证令牌。 - 发送验证请求:
通过ADB端口转发或手机端curl发送POST请求(需提前获取移动端Discord的用户令牌,可通过抓包或调试工具获取):# 端口转发,将手机网络请求映射到本地 adb forward tcp:8080 tcp:8080 # 手机端执行curl请求(若手机未预装curl,可先通过ADB安装) adb shell curl -X POST https://discord.com/api/v9/auth/qrcode/fIUSUsnlPHThLkj5ghZtCATW5hxpc7qn00KYe1iJCNw/scan -H "Authorization: 你的移动端Discord用户令牌"
关键注意事项
- 验证令牌有效期仅数分钟,需在有效期内完成操作;
- 确保手机已开启USB调试,ADB连接正常;
- 提取用户令牌可能需要手机ROOT权限,无ROOT环境优先尝试方案1、2。
内容的提问来源于stack exchange,提问作者André Pereira
相关产品推荐
相关产品推荐

