DOC软件文档百宝箱

免root实现自动签到打卡的思路

签到、打卡、收能量这类每天必须点一遍的操作,最适合交给自动化。本篇以 Hamibot 为例,讲免 root 实现这类场景的原理、脚本怎么挑、定时任务怎么排,以及出了问题怎么排查。工具概况见 hamibot 安卓自动化介绍站。相关文档:从配对到跑通第一个脚本的完整流程.md · 脚本市场与多设备批量管理的玩法.md


一、为什么这类场景最适合自动化

签到打卡的操作有三个特征:频率固定(每天一次)、路径重复(进页面、找按钮、点下去)、不紧急(晚点做也行)。这三个特征正好对上 Hamibot 的能力模型——脚本模拟人来操作界面,定时任务负责准点,无需 root 的控件操作覆盖绝大多数应用的界面元素。

原理上,Hamibot 客户端基于系统无障碍服务读取屏幕控件:脚本用 id()、text() 这类选择器定位按钮再触发点击,而不是死记坐标,所以界面稍有变动也不容易失效;只有个别游戏画面、无控件信息的页面才需要坐标点击(这部分要求安卓 7.0 以上)。

二、脚本从哪来:两条路

不想碰代码:脚本市场里搜「签到」「打卡」「能量」等关键词,现成脚本不少(应用签到助手、社区签到、飞书打卡等类型都有),装进账号就能跑。挑的时候看三处——

  1. 脚本页写的权限要求(多数要求无障碍 + 后台弹出界面,缺了跑不起来);
  2. 是免费还是付费(付费按定价计划订阅,多数带试用期,先试再订);
  3. 最近更新时间(应用改版后脚本跟着更新才稳定)。

愿意改几行:自己写更贴合自己的需求。核心逻辑通常十几行——启动目标应用、等页面加载、找到签到按钮、点掉、收工:

app.launchApp('目标应用');
sleep(3000);                          // 等首页加载
let btn = text('签到').findOne(5000); // 最多等 5 秒
if (btn) { btn.click(); toast('签到了'); }
else { toast('没找到签到按钮'); }

配合 device.keepScreenOn() 与定时任务,夜里挂机、早上看结果就行。

三、定时任务:让「每天」两个字落地

控制台里给脚本配定时,指定时间自动运行,不用人守着。免费额度含 1 个定时任务,个人单场景基本够用;多个场景要么订阅扩容,要么把多个动作合并进一个脚本里顺序执行。想让多台手机同时签到,就是多设备运行的事了(见 脚本市场与多设备批量管理的玩法.md)。

四、跑不起来时的排查顺序

  1. 运行几秒就结束 → 权限没开全,无障碍、后台弹出界面逐项补齐;
  2. 反复提示开无障碍 → 服务被系统杀了,重启手机最快恢复,再把自启动、省电无限制、前台服务开齐减少复发;
  3. 卡在某一步不动 → 打开 App 右上角日志看输出,把截图通过脚本页的「创建脚本工单」发给脚本作者;
  4. 设备到了点却没跑 → 先看控制台里设备是否在线,离线多半是省电策略杀了后台。

把原理吃透之后,这类思路不限于签到:消息提醒、定时截图、批量整理都能套同一条链路。安装包与版本信息在 hamibot 安卓自动化介绍站 有整理,上手流程则看 从配对到跑通第一个脚本的完整流程.md。

同站更多