公众号扫码登录为什么三四天必掉?实测与应对
实测三轮:公众号后台扫码登录三四天固定失效,一直在用也照样断,掘金、B 站同法挂 41 天仍有效。讲清原因判断,以及到期预警、失败补发、开跑前查登录三件事怎么做。
公众号后台(mp.weixin.qq.com)的扫码登录大约三四天就会失效,而且是从登录那一刻算起的固定寿命:期间一直在用、定时检查、每天真实建草稿,都拦不住它到点断开。 所以做公众号自动化,别想着「续命」,要做的是提前预警、失败补发、开跑前先查登录。
下面是我们三轮实测的数据,以及 OmniGoAI 的 OmniPost 在这件事上踩过的坑和最后的做法。
实测:三轮都是三四天
我们在本机常年挂着十几个平台的扫码登录,程序每 10 分钟检查一次登录是否有效。公众号三轮记录:
- 8 月 26 日 09:29 登录,8 月 30 日失效。
- 9 月 2 日 14:37 登录,9 月 6 日早上之前失效。
- 10 月 14 日 22:28 登录,16 日仍可建草稿,20 日已失效。
前两轮里程序每天都在真实建草稿,不是放着不用。第二轮失效后没人察觉,之后 5 天的定时任务全部死在最后一步,两个号一共白跑 10 次。
作为对照,同一台电脑、同一套检查方式下:
- 掘金、B 站登录 41 天后仍有效;
- CSDN、知乎、博客园等 11 个平台重新登录 7 天半,全部仍有效。
其它平台截至 10 月 22 日都还没掉,所以只能给下限。
为什么「保活」没用?
常见的思路是定时刷新页面、发心跳请求,让会话一直「活跃」。这对很多平台有效,因为它们的登录是「闲置多久就退出」。
公众号后台的表现不一样:活跃与否不影响到期时间,到点就断。这更像平台侧给登录会话设了一个绝对寿命。这是我们从三轮行为上做的判断,官方没有公开说明,具体时长也可能随账号类型或风控策略变化。结论不变:客户端做什么都延长不了它。
应对一:提前预警,让人在任务前扫码
既然到期拦不住,就把「到期」变成一件可以预知的事:
- 登录成功时记下时间;
- 按经验寿命推算到期时间(公众号按 3 天保守估计);
- 如果关键 Cookie 自带过期时间,以它为准;几个信号同时存在时取最早的那个,宁早勿晚;
- 进入最后 12 小时就提醒一次,每个登录周期只提醒一次,别刷屏。
12 小时的意思是:晚上收到提醒,早上任务开跑前扫一下码就行。
有一处很容易写错:检查登录有效时,不要更新「登录时间」。否则每次检查都把起点往后推,预测的到期时间永远在未来,预警永远不会触发。
应对二:失败的任务排队补发
遇到「需要登录」,不要直接把任务记成失败:
- 把这次要发的内容存一份快照;
- 挂进补发队列,设冷却时间(比如 10 分钟)和有效期(比如 48 小时);
- 检测到重新登录后,立即放行队列里的任务;
- 同标题、同目标只挂一条,补发成功后清掉快照。
两点要守住:一是混有其它硬性错误(比如内容违规)时不要挂补发,重登也救不了;二是补发前做去重,宁可漏发也不能重复发布。
应对三:开跑前先查登录
定时任务的第一步应该是检查登录,而不是先让 AI 把稿子写完、配好图,最后一步才发现发不出去。我们那 5 天白跑,根本原因就是任务没先查。登录不在就停下、通知人,比硬跑完再失败省得多。
一个坑:自学习的寿命会被污染
我们曾让程序根据每次失效自动学习各平台的登录寿命,结果学出了公众号 21.5 小时、CSDN 804 小时这类离谱数字。
原因是程序刚启动时,浏览器分区的 Cookie 还没从磁盘加载完,第一轮检查没带上 Cookie,平台自然返回「未登录」,程序就把「距离上次登录多久」当成了寿命。
修正办法有两条:低于 24 小时的观测值直接丢弃;判定失效之前,先确认请求真的带上了登录 Cookie。
常见问题
公众号能不能完全不扫码?
可以走官方开发者接口,用 AppID 和 AppSecret 换 access_token,凭证可以程序自动刷新,不需要隔几天扫码。代价是要配服务器 IP 白名单,而且不同类型、不同认证状态的账号能用的接口不同,详见我们整理的公众号 API 建草稿指南和 IP 白名单报错排查。
多开几个浏览器、多个账号会不会更容易掉?
我们没有观察到多账号会缩短寿命。多个账号同时登录时,关键是每个账号用独立的浏览器分区,避免 Cookie 互相覆盖,见多账号会话隔离。
预警提前多久合适?
我们用 12 小时。原则是让提醒落在人醒着、而且来得及处理的时候,按你的任务时间往前推。
能不能自动扫码?
不建议。扫码本身就是平台确认「真人在场」的环节,绕过它属于对抗平台风控,账号风险远大于每三天扫一次码的成本。
在 OmniPost 里是怎么做的
上面三件事已经内置在 OmniPost 里:登录到期前 12 小时弹通知,掉线导致的失败自动进补发队列、重新登录后立即补发,智能体每天分发前可以用 omnipost alerts 或 MCP 工具 list_alerts 先查一遍登录状态。公众号仍然需要你每三四天扫一次码,这一点任何工具都绕不过去,但至少不会再有「白跑五天没人知道」。如果你在用 Claude Code 等智能体做多平台分发,可以下载 OmniPost 试试。