WeChaty 微信机器人防封实战:把账号活过 90 天的四步法

WeChaty 微信机器人防封实战:把账号活过 90 天的四步法 WeChaty 微信机器人防封实战把账号活过 90 天的四步法【免费下载链接】wechat-bot Multi-platform IM AI Agent for Telegram, WhatsApp, Lark, and WeChat. Connects ChatGPT / Claude / Kimi / DeepSeek / Ollama / Pi for auto-replies, community analysis, contact management, and inactive-friend detection.项目地址: https://gitcode.com/GitHub_Trending/we/wechat-bot跑 wechat-bot 第 17 天账号收到「功能受限」的提示一个 3000 人的群里机器人连续两周「有问必答」回复间隔稳定在 800 毫秒左右——太稳定本身就是一种机器特征。问题不出在 AI 服务而出在运行方式。这份笔记按运营时间线把 WeChaty 微信机器人防封的四个阶段上线之前、运行之中、出问题时、长期运营拆开讲每一条都能对照项目源码核实。上线之前先做四项风险自查再加固登录环境最大的风险变量不是回复逻辑而是登录通道和网络环境。代码当天能改账号环境一周内改不了。先弄清一个词协议指机器人登录微信所用的「通道」越接近官方客户端的通道风控关注度越低。项目默认的 puppet 是wechaty-puppet-wechat4uWeb 类协议配置见 src/wechaty/bot.jsREADME 里作者明确提示微信对 Web 协议审查已非常严格存在警告或封号风险padlocal 协议作者也已停止维护。选 puppet 时优先选持续维护、更接近设备端的协议必须用 Web 协议时把它限制在低频、小范围场景。拿到代码git clone https://gitcode.com/GitHub_Trending/we/wechat-bot然后npm i、cp .env.example .env。Pi 微信渠道的快速启动流程见 docs/pi-im-agent.md配好后用wb agent --im wechat --agent pi扫码登录。环境加固按顺序做四件事选账号用实名、有一定使用历史的账号新号先养再上首次部署放在「丢了不心疼」的备用号上验证。收窄白名单ALIAS_WHITELIST和ROOM_WHITELIST只填真正活跃的好友与群。群聊默认要求 机器人才回复逻辑在 src/wechaty/sendMessage.js再给AUTO_REPLY_PREFIX设一个前缀让机器人只在被「点名」时应答而不是全程旁听。同时打开消息落盘为后面排障留证据BOT_NAME机器人名 ALIAS_WHITELIST好友备注1,好友备注2 ROOM_WHITELIST群名1 AUTO_REPLY_PREFIX问一下: WECHAT_STORE_MESSAGEStrue固定网络一台机器、一个号、一个出口 IP三者长期绑定24 小时内不要跨地区切换登录地。收敛模型通道AI 服务请求走代理时固定出口。项目内置 12 个模型通道分发逻辑在 src/wechaty/serve.js需要同时接多个服务时聚合 API 平台能减少代理切换次数、也便于单通道故障时回滚下图是这类服务常见的形态切换模型通道每周不超过两次。通道越稳定机器人的网络行为越「无聊」越像真人。运行之中把发送频率和话术拉进人类区间风控看的是消息流的形状。人类行为有三个特征延迟、作息、变化。机器人也要做出这三个特征。把回复间隔拉到 1-3 秒随机为什么固定间隔等于机器签名。AI 生成一条回复本身要 0.5-2 秒生成完立刻发出时间线上对不上。怎么做每条回复前先等 1-3 秒随机延迟长文本项目已按 500 字切段发送trySay见 src/wechaty/sendMessage.js段与段之间再补 0.5-1 秒避免「机关枪」式连发同一人连续两条回复不要一字不差AI 对同一问题倾向给出同样的答案换行、换说法都行。最小可用的封装如下放进src/wechaty/再把原有的contact.say(response)/room.say(response)替换为它import { setTimeout as sleep } from node:timers/promises const OPENERS [, 嗯, 换个说法, 简单说] // 先随机等待 1-3 秒再拼随机开头替换原 say 调用 export async function humanizeSay(target, text) { await sleep(1000 Math.floor(Math.random() * 2000)) const opener OPENERS[Math.floor(Math.random() * OPENERS.length)] await target.say(opener text) }把夜间响应概率压到 5%23:00-7:00 让机器人「睡觉」群聊 一律不接只保留白名单私聊且按 5% 概率响应非白名单消息夜间直接丢弃。白天把发送峰值压到每小时 20 条以内超了就排队缓发不 burst。主动类功能如不活跃好友检测只在白天低峰跑。给 AI 回复加变化同一问题换句式回答随机加前后缀偶尔一句话短答同一会话内不要连续两次使用相同开头。人设感交给各服务的 system prompt 配置.env里的CLAUDE_SYSTEM、OLLAMA_SYSTEM_MESSAGE等去掉「我是一个 AI 助手」这类模板味。出问题时先看信号再决定降级、暂停还是恢复不要等微信团队的提示自己的日志更快。项目会把每条消息写入.data/wechat/messages.jsonl实现见 src/platforms/wechat/messageStore.js这是判断的第一手材料。盯三类信号再排除一类干扰回复延迟机器人回复后后续消息间隔反复超过 5 秒或发送接口偶发超时。登录抖动二维码无故重发登录 24 小时内掉线。明确警告微信团队服务号下发提示消息分片逻辑里已有针对「微信团队」的跳过处理见 src/wechaty/sendMessage.js。排除项AI 服务返回 429 或超时。429 是模型服务商的限流「你问得太快我先扣着」与微信封号无关先换通道再下结论别误伤判断。⚠️ 前三类信号出现任一按下面的处置决策流走不凭感觉操作对应动作降级延迟信号停掉所有群聊只保留白名单私聊发送间隔翻倍关闭一切主动功能。暂停登录抖动停进程不要反复扫码——每次扫码都是一次新的登录事件等 24 小时从固定网络、固定设备重新登录。恢复明确警告账号转纯人工使用 3-7 天期间不启动机器人提示消失后从小白名单、小流量重新接回。原则只有一条账号价值高于机器人可用性。进程随时能重启账号不能。长期运营每周一份八项检查单✅ 防封线是漂移的靠制度不靠感觉。每周花十分钟过一遍动作频率达标判断核对周发送量与每小时峰值每周峰值低于 30 条/小时趋势不升审计白名单移除不活跃好友和群每周白名单数量与真实活跃用户一致抽查连续两条相同回复每周0 条发现就加强话术变异检查网络出口与登录设备记录每月24 小时内无跨地区跳转演练一次模型通道切换每月切换耗时低于 10 分钟检查 .data/wechat 日志占用每月磁盘占用不无限增长给账号放一天「人工假」每月停机器人 24 小时后发送延迟回落跟踪 puppet / 协议维护状态持续上游停更则先停机器人再换协议三条持续迭代的提醒微信风控策略在动上面的线是今天的基线不是上限每月重校一次阈值。更换协议或 puppet 版本后先在备用账号跑一周再上生产账号。不相信任何「绝对防封」的说法主账号永远押在已验证过的通道上。防封不是一次性配置而是使用强度与账号价值之间的持续权衡。账号活着其余都能重来。【免费下载链接】wechat-bot Multi-platform IM AI Agent for Telegram, WhatsApp, Lark, and WeChat. Connects ChatGPT / Claude / Kimi / DeepSeek / Ollama / Pi for auto-replies, community analysis, contact management, and inactive-friend detection.项目地址: https://gitcode.com/GitHub_Trending/we/wechat-bot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考