WhatsApp 如何检测 Baileys 与 whatsapp-web.js 群发
AndySendy academy
← 全部文章

🔗 出卖你的不是 WebSocket。是它周围的一切

「库直接复现协议——WhatsApp 分不清真假客户端」——严肃拆解后站不住的便利假设。Baileys 与 whatsapp-web.js 确可无浏览器、无手机运行,但不等于隐形。分清检测中已确认部分与开发者社区重建。


为何围绕此题的混淆顽固

原论点两个因素:行为与协议版本。行为层确认充分——有文档的产业实践。协议版本作为检测机制无任何官方确认——合理技术假设,非 Meta 文档事实。网页平行——扩展与 isTrusted:浏览器给信号,WhatsApp 是否使用为假设。


之前 / 之后:修正原论点

之前:

两个因素抓:行为(无停顿发送速度、无「正在输入」)与协议版本(版本不匹配被记录)。

之后:

已确认、文档充分的风险——行为信号:发送速度、完全均匀间隔、大量相同消息群发。协议版本作为 Meta 单独核查的检测因素官方未确认——社区假设:逆向库客观落后 Meta 更新,统计上更易故障或封禁。

之前:

消息前无「正在输入」——两大检测因素之一。

之后:

缺少 presence 事件(composingpaused)——从业者广泛讨论的合理行为标记。无直接确认 Meta 在每条消息前专门检查该事件——仅更广泛类别已确认:整体不自然的完美时序——见行为反垃圾


Baileys 与 whatsapp-web.js——不同架构,不同风险

参数 Baileys whatsapp-web.js
工作方式 逆向 WebSocket 客户端,无浏览器 [✓] 经 Puppeteer/Chromium 控制真 WhatsApp Web [✓]
主要风险层 网络协议 + 行为 浏览器指纹 + 行为
自动化标记 Protobuf 包结构、TLS 指纹 navigator.webdriver = true、Canvas/WebGL 异常、isTrusted = false
Presence(输入/暂停) sendPresenceUpdate(),需手动实现 [✓] 经真实 UI 模拟

重要细节:两种方案默认都不更安全。Headless 浏览器不会因打开 Chromium 就更「合法」——无图形环境的 headless 本身产生数十项自动化技术特征。


官方与广泛已确认什么


小案例:whatsapp-web.js 20 分钟 4 号

营销者在 Ubuntu 服务器 Docker 部署 whatsapp-web.js 向温库群发。尽管库质量,20 分钟内 4 个号码封禁。日志显示容器内 Chromium 为 navigator.webdriver = true 且无光标移动事件。

证明: 无图形环境的服务器浏览器自动化产生明显技术异常——团队观察事实。未证明:webdriver 标志为因,而非与群发速度或其他信号叠加。论坛观察,非 Meta 算法解剖。

第二案例:B2B 用 Baileys 在每条消息前强制 sendPresenceUpdate('composing') 并按 50 ms/字符暂停。自动封频率下降,预热号日发达 150 条。与 presence 逻辑改善相关,非证明其为唯一决定因素——暂停本身可能起作用,与 presence 无关。


社区争论:stealth 插件 vs 网络指纹

JS 开发者分歧:有人认为 puppeteer-extra-plugin-stealth 通过掩 webdriver、伪造 Canvas/Codecs 解决 whatsapp-web.js 检测。另有人认为 Meta 反垃圾可能评网络时序与 TCP/IP 指纹而非单个浏览器变量——数据中心服务器仍可见,与 stealth 无关。

双方均无确认——无 Meta 可验证数据的重建,如灰色基础设施方案


自动化实践中的数字

Meta 无 Node.js 库封禁比例官方统计。行为限制实践来源:

后三块为论坛观察,非 Meta 确认阈值。


额外风险:恶意 fork

偏离检测主题需单独说明。npm 生态有伪装 Baileys 的恶意包:某 fork 静默窃取聊天、联系人、会话 token。非反封——直接账号 compromission——须核实库来源与 WhatsApp 内关联设备。


常见误解

「协议是官方的,Meta 就当库是合法客户端」 错。协议经非官方逆向使用——无论复现多准,服务条款明确禁止。

「whatsapp-web.js 更安全因为真开浏览器」 错。无图形的 Headless Chromium 自有自动化指纹集——不比直连 WebSocket 更不显眼。

「QR 扫成功账号就安全」 错。授权只验加密密钥有效性——会话打开后行为与网络分析持续。

「Stealth 插件完全解决检测」 未证实。插件遮住部分浏览器变量,未必遮住服务器网络时序或 TCP/IP 指纹。


实践结论


🎯 下一步

Baileys 或 whatsapp-web.js 群发已在掉——先查行为画像(速度与间隔规律性)——文档最多的风险因素。保持库版本新不是因为版本「被检测」,而是过时协议客观增加会话异常概率。

结论

实践规则:

无浏览器不等于无痕迹——痕迹只是换了一层。