← 返回观点

公众号扫码登录为什么三四天必掉?实测与应对

实测三轮:公众号后台扫码登录三四天固定失效,一直在用也照样断,掘金、B 站同法挂 41 天仍有效。讲清原因判断,以及到期预警、失败补发、开跑前查登录三件事怎么做。

公众号后台(mp.weixin.qq.com)的扫码登录大约三四天就会失效,而且是从登录那一刻算起的固定寿命:期间一直在用、定时检查、每天真实建草稿,都拦不住它到点断开。 所以做公众号自动化,别想着「续命」,要做的是提前预警、失败补发、开跑前先查登录。

下面是我们三轮实测的数据,以及 OmniGoAI 的 OmniPost 在这件事上踩过的坑和最后的做法。

实测:三轮都是三四天

我们在本机常年挂着十几个平台的扫码登录,程序每 10 分钟检查一次登录是否有效。公众号三轮记录:

  1. 8 月 26 日 09:29 登录,8 月 30 日失效。
  2. 9 月 2 日 14:37 登录,9 月 6 日早上之前失效。
  3. 10 月 14 日 22:28 登录,16 日仍可建草稿,20 日已失效。

前两轮里程序每天都在真实建草稿,不是放着不用。第二轮失效后没人察觉,之后 5 天的定时任务全部死在最后一步,两个号一共白跑 10 次。

作为对照,同一台电脑、同一套检查方式下:

  • 掘金、B 站登录 41 天后仍有效;
  • CSDN、知乎、博客园等 11 个平台重新登录 7 天半,全部仍有效。

其它平台截至 10 月 22 日都还没掉,所以只能给下限。

为什么「保活」没用?

常见的思路是定时刷新页面、发心跳请求,让会话一直「活跃」。这对很多平台有效,因为它们的登录是「闲置多久就退出」。

公众号后台的表现不一样:活跃与否不影响到期时间,到点就断。这更像平台侧给登录会话设了一个绝对寿命。这是我们从三轮行为上做的判断,官方没有公开说明,具体时长也可能随账号类型或风控策略变化。结论不变:客户端做什么都延长不了它。

应对一:提前预警,让人在任务前扫码

既然到期拦不住,就把「到期」变成一件可以预知的事:

  • 登录成功时记下时间;
  • 按经验寿命推算到期时间(公众号按 3 天保守估计);
  • 如果关键 Cookie 自带过期时间,以它为准;几个信号同时存在时取最早的那个,宁早勿晚;
  • 进入最后 12 小时就提醒一次,每个登录周期只提醒一次,别刷屏。

12 小时的意思是:晚上收到提醒,早上任务开跑前扫一下码就行。

有一处很容易写错:检查登录有效时,不要更新「登录时间」。否则每次检查都把起点往后推,预测的到期时间永远在未来,预警永远不会触发。

应对二:失败的任务排队补发

遇到「需要登录」,不要直接把任务记成失败:

  1. 把这次要发的内容存一份快照;
  2. 挂进补发队列,设冷却时间(比如 10 分钟)和有效期(比如 48 小时);
  3. 检测到重新登录后,立即放行队列里的任务;
  4. 同标题、同目标只挂一条,补发成功后清掉快照。

两点要守住:一是混有其它硬性错误(比如内容违规)时不要挂补发,重登也救不了;二是补发前做去重,宁可漏发也不能重复发布。

应对三:开跑前先查登录

定时任务的第一步应该是检查登录,而不是先让 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 试试。

#微信公众号#登录态#自动化#运维

更多文章