微信抢红包插件 WeChatLuckyMoney 完整解析:它如何做到自动抢红包?
微信抢红包插件 WeChatLuckyMoney 完整解析:它如何做到自动抢红包?
【免费下载链接】WeChatLuckyMoney:money_with_wings: WeChat's lucky money helper (微信抢红包插件) by Zhongyi Tong. An Android app that helps you snatch red packets in WeChat groups.项目地址: https://gitcode.com/gh_mirrors/we/WeChatLuckyMoney
WeChatLuckyMoney 是一款开源的 Android 微信抢红包插件,由开发者 Zhongyi Tong 维护,项目使用 MIT 协议开放全部源码。它的核心能力是借助系统辅助功能(AccessibilityService)自动监测并拆开微信群聊中的红包,全程无需 ROOT,安装包体积约 1M。这篇文章从项目诞生的真实背景讲起,用通俗语言拆解它的工作机制,并给出从编译到进阶配置的完整路径。
从一次小米发布会说起:项目的真实起源
很多开源工具的故事都始于"某个具体场景里没被满足的需求",WeChatLuckyMoney 也不例外,但它多了一层有趣的背景。
2015 年秋季,小米在 MIUI 7 发布会上演示了一段"自动抢红包"的测试代码,用于展示新系统的通知与辅助能力。这段代码只做了最基础的演示,但它让不少人第一次意识到:系统无障碍服务其实可以做到很多事。
开发者 Zhongyi Tong 随后以这段演示代码为基础,重新设计了红包识别逻辑、去重算法和可配置项,整理成结构完整的开源项目 WeChatLuckyMoney,并把包名统一为xyz.monkeytong.hongbao。项目经历了 v1.0 到 v5.0 的多次迭代,从最初"会重复点击"的原型,逐步演进到拥有通知/列表/聊天页三档监视、延时开包、屏蔽关键字、自动回复等能力的成熟工具,这些演进过程都记录在项目根目录的CHANGELOG.md中。
一句话讲清它的价值
它把"发现红包、进入会话、点击拆开"这三个动作交给系统辅助服务自动完成,并且不需要 ROOT、不需要修改微信,代码完全公开。
与同类的模拟点击方案相比,WeChatLuckyMoney 的差异点在于"识别"而非"抢":
- 不依赖截图识别,而是直接读取微信界面的节点树(AccessibilityNodeInfo),精确找到"领取红包"按钮
- 通过
HongbaoSignature对发送者、红包内容、时间做签名去重,避免对同一个红包反复点击 - 所有行为在微信的 Activity 边界内执行,符合辅助服务的常规使用方式
三步跑通:从源码到自动抢红包
整个上手过程不需要额外 IDE 环境,一台安装了 JDK 的电脑即可。
第一步,获取源码。克隆项目到本地:
git clone https://gitcode.com/gh_mirrors/we/WeChatLuckyMoney cd WeChatLuckyMoney第二步,编译安装包。使用项目自带的 Gradle Wrapper,无需手动安装 Gradle:
./gradlew assembleDebug编译完成后,APK 会生成在app/build/outputs/apk/debug/目录下,把它传输到手机安装即可。项目最低支持 Android 5.0(Lollipop)。
第三步,开启辅助功能。打开应用,点击主界面的开关按钮跳转到"无障碍"设置页,找到「微信红包」并开启。系统会弹窗提示该服务可以"观察您的操作",这是辅助功能的正常授权流程,拒绝后插件将无法工作。
它如何"看见"红包:一套简洁的状态机
要理解 WeChatLuckyMoney 的工作原理,可以先想一个问题:一个应用如何在不 ROOT 的情况下"看见"另一个应用的内容?
答案是 Android 的辅助功能框架。当辅助服务被授予权限后,系统会持续把界面变化事件(比如窗口切换、内容更新、通知到达)推送给服务。核心逻辑集中在app/src/main/java/xyz/monkeytong/hongbao/services/HongbaoService.java,它继承了AccessibilityService,整个抢红包过程可以抽象成一条流水线:
第一步:发现红包入口。服务提供了三个监视入口,对应general_preferences.xml中的三档开关:
| 监视选项 | 触发方式 | 适用场景 |
|---|---|---|
| 监视系统通知 | 读取"[微信红包]"通知并直接进入会话 | 最不易被察觉 |
| 监视聊天列表 | 在消息列表中发现红包提示 | 兼顾速度与隐蔽 |
| 自动拆开红包 | 在聊天页内持续扫描"领取红包"节点 | 响应最快 |
第二步:点击进入红包。服务通过findAccessibilityNodeInfosByText在界面节点树中查找"领取红包"、"查看红包"等文本节点,命中后对节点的父容器执行一次点击(ACTION_CLICK),微信随即弹出拆红包界面。
第三步:点击"拆开"按钮。这是最需要谨慎处理的一步。代码中维护了两个标志位mLuckyMoneyReceived和mUnpackNode,分别表示"已发现红包"和"待拆开的按钮"。在 Android 7.0 以上的机型上,直接对按钮执行点击可能不生效,openPacket()方法会根据屏幕 dpi 计算坐标,通过dispatchGesture派发一条模拟手势来完成拆包动作。
第四步:收尾与去重。拆开后若检测到"红包详情"或"手慢了"等文本,服务会发送返回键(GLOBAL_ACTION_BACK)退出界面。同时,HongbaoSignature会记录本次红包的发送者、内容与时间,生成一条签名,同一签名不会重复触发,从机制上避免了"对着同一个红包狂点"的问题。
整个过程有一个贯穿始终的互斥锁(mMutex)保证每个时刻只处理一个红包,防止状态错乱。
一个真实场景:年三十晚上的家庭群
程序员小周在除夕夜要赶一个线上发布,而家族群里长辈们的红包从晚上八点开始就没停过。他没法一直盯着手机,于是提前做好了配置:
- 打开「监视系统通知」,这样即使手机锁屏,也能第一时间感知红包到达
- 将「延时拆开红包」设置为 800 毫秒,让抢红包的节奏看起来更接近人手操作
- 在「屏蔽红包文字」中填入"专属"和"翻倍",避开带有诱导性质的专属红包
- 开启「拆开红包后自动回复」,在
comment_preferences.xml对应的设置页填上"谢谢老板"、"恭喜发财"等感谢语,服务会在拆完红包后随机发送一条
结果是他顺利完成了发布,群里也没有遗漏任何一次红包。这个场景想说明的是:WeChatLuckyMoney 的价值不在于"抢得比谁快",而在于把重复性的、需要盯守的操作交给程序,让使用者把注意力放回真正重要的事情上。
进阶玩法:让自动抢红包更接近人工操作
如果你已经跑通基础功能,下面这些配置项可以进一步调整插件的"行为风格"。
延时开包,模拟人类反应速度。在设置中拖动滑块,可配置 0-2000 毫秒的延迟。watchChat()中通过Handler.postDelayed实现,延迟结束才执行openPacket()。全速模式适合家庭群,克制模式适合重要工作群。
黑名单与屏蔽文字。HongbaoSignature.generateSignature()会读取pref_watch_exclude_words配置,逐一检查红包内容是否包含屏蔽词,命中则直接跳过。这让"某些群的红包不抢"成为可能。
自动回复。这是实验性功能,定义在app/src/main/res/xml/comment_preferences.xml。拆完红包后,服务会在输入框写入感谢语并发送,支持 @ 发红包的人,也可配置多条回复随机挑选。
息屏抢红包与功耗提醒。PowerUtil使用 WakeLock 在息屏状态下保持后台活跃,实现"锁屏也能抢"。但设置页的提示写得很直白:这个模式最多保持 30 分钟后台活跃,会显著增加耗电。项目对资源消耗的处理方式是"功能给你,风险也讲清楚",而不是默认开启。
如何参与这个项目
WeChatLuckyMoney 是典型的个人开源项目,参与方式很轻量:
- 反馈问题:主界面的"帮助与反馈"入口会跳转到 Issue 页面,描述问题时附上手机型号、系统版本和微信版本,会大大加快定位效率
- 阅读源码:核心逻辑集中在
services/HongbaoService.java、utils/HongbaoSignature.java,加上utils/目录下的PowerUtil、UpdateTask等工具类,全部代码不到两千行,适合作为阅读辅助功能 API 的入门样本 - 关注更新:应用内置了更新检测(
utils/UpdateTask.java),联网时自动检查新版本;项目也在持续适配新版微信
收束:工具透明,使用自律
WeChatLuckyMoney 是一个"把话说清楚"的项目:它在 README 中明确声明源自小米的演示代码,使用 MIT 协议开放,同时也明确提示——插件会改变微信的交互方式,使用者需要自行承担包括"禁用红包功能"甚至"微信封号"在内的风险。这种透明和克制,正是它作为开源项目最值得尊重的地方。
如果你对辅助功能开发感兴趣,或只是想解决"过年抢不到红包"的小烦恼,可以按文中的三步跑通一次。编译、安装、授权,然后把注意力放回生活本身——这才是这类工具存在的意义。
【免费下载链接】WeChatLuckyMoney:money_with_wings: WeChat's lucky money helper (微信抢红包插件) by Zhongyi Tong. An Android app that helps you snatch red packets in WeChat groups.项目地址: https://gitcode.com/gh_mirrors/we/WeChatLuckyMoney
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
