问题根因(3 个叠加)
1. 旧的浏览器数据没清干净
删除 session 后,session-my-whatsapp 和 session-test-session 文件夹还在,新 session 会用到脏数据,扫码就容易失败。
2. 操作太快
Delete 后马上 Create + Start,后端 Chromium 还没完全退出,就会卡住或失败。
3. OpenWA 重启后找不到 Chrome(最关键)
重启后 Puppeteer 找不到 Chrome,session 变成 failed,QR 出不来或扫了也连不上。
我已做的修复
| 修复项 | 说明 |
|---|---|
清理所有旧 session 数据 | 删除残留文件夹 |
配置系统 Chrome | PUPPETEER_EXECUTABLE_PATH 指向 Google Chrome |
优化 WhatsApp Web 版本 | WWEBJS_WEB_VERSION + 更长超时 |
重启 OpenWA | 已正常运行,QR 可生成 |
加固前端页面 | 防重复点击、删除后等 5 秒、等待 session 就绪再弹 QR |
新增「用手机号配对」 | QR 失败时可改用 8 位码 |
显示 failed 和错误信息 | 不再误显示 Connected |
后端验证通过: 新 session 状态 qr_ready,QR 码正常生成。
你现在按这个做(很重要)
第 1 步:刷新页面
Cmd + Shift + R
打开:http://localhost:8888/openwa-messenger.html
第 2 步:检查 API 设置
- API URL 用:
http://localhost:2785(本机不要用 cloudflare 地址) - API Key 从
.api-key文件复制 - 点 Save & Connect
第 3 步:扫码(或用手机号)
页面上应该已有 my-whatsapp session。
方法 A — 扫码:
- 点 Get QR
- 马上扫(60 秒内)
- 若手机提示
could not link device→ 点 Refresh QR,再扫
方法 B — 手机号配对(更稳):
- 点 Use Phone Number Instead
- 输入:
601113291950 - 手机:WhatsApp → 设置 → 已连接的设备 → 用手机号连接 → 输入 8 位码
第 4 步:确认连接成功
状态必须是 ready(绿色),不是 qr_ready,才能发消息。
如果手机还是显示 could not link device
- 手机 WhatsApp → 已连接的设备 → 删掉不用的设备(最多 4 个)
- 等 10–15 分钟 再试(连续失败可能被 WhatsApp 临时限制)
- 更新 WhatsApp 到最新版
- 确保手机和电脑网络正常
以后避免再出问题
- Delete 后等 5 秒 再 Create
- 不要连续快速点 Create / Start
- 发消息前确认状态是
ready - 断开时点 Reconnect,不要马上 Delete
- API URL 在本机用
http://localhost:2785
当前已有一个干净的 session 在等扫码。刷新页面后试 Get QR 或 Use Phone Number Instead,完成后告诉我结果。
调试已完成,主要结论如下:
不是 session 存储漏洞。 问题是:旧浏览器数据残留、删除后操作太快,以及 OpenWA 重启后找不到 Chrome。
已修复:
- 清理旧 session 数据
- 配置系统 Chrome + WhatsApp Web 版本
- 加固前端(防重复点击、删除后等待、Reconnect、手机号配对)
- OpenWA 已重新运行,QR 可正常生成
当前状态: 后端正常,有一个干净的 my-whatsapp session 在等扫码(qr_ready)。
请 Cmd + Shift + R 刷新 http://localhost:8888/openwa-messenger.html,API URL 用 http://localhost:2785,然后点 Get QR 扫码,或 Use Phone Number Instead 用手机号配对。连上后状态要变成 ready 才能发消息。