Skip to content

About

基于AutoJS的蚂蚁森林收能量脚本

Topics

Resources

Stars

1.6k stars

Watchers

22 watching

Forks

Repository files navigation

GitHub forks GitHub stars GitHub issues Page Views Count

蚂蚁森林自动收能量脚本

基于 Auto.js 实现的蚂蚁森林自动化脚本。

觉得本项目好用的话请给个 Star 吧~

⚠️ 重要提示:依赖与环境

  • 核心依赖: 本脚本基于 AutoJS Modify 或 困鱼 (AutoJS.fake) 开发和运行。建议直接使用困鱼,因为目前市面上大部分应用检测autojs关键字,会导致黑号。
    • 不兼容: 不再支持原版 4.1.1(已删库且问题多)、官方 Pro 版(限制无障碍、代码审查)。
    • 更多版本下载: https://wwxs.lanzouq.com/b042le51i (密码: b034)
    • 修改版 Auto.js 源代码: TonyJiangWJ/Auto.js
  • 系统要求:
    • 安卓 7.0 及以上版本 (无需 ROOT)。
    • 安卓 5.0 - 6.x 版本 (需要 ROOT 权限)。
  • 显示要求: 脚本依赖图像识别,请关闭手机的护眼模式、深色模式 (暗色模式) 等可能影响屏幕颜色的功能。
  • 项目渊源: 本项目是在 Nick-Hopps/Ant-Forest-autoscript (原作者 Nick-Hoops 已不再维护) 的基础上发展而来,虽然代码已大幅重构,但仍感谢原作者的开创性工作。解锁模块参考自 e1399579/autojs。

✨ 主要功能

  • 自动收能量:
    • 通过“逛一逛”高效收集好友能量。
    • 识别并跳过开启能量护罩的好友。
    • 识别能量球倒计时,智能安排下次收取时间。
  • 多种运行模式:
    • 计时模式: 根据识别到的最小倒计时启动,可设置最大等待时间。
    • 循环模式: 按设定次数不间断执行。
    • 永不停止模式: 无倒计时或超过设定时间则按设定间隔启动,实现全天候运行。
  • 智能解锁:
    • 自动识别屏幕锁定方式 (图形、PIN、密码)。
    • 支持支付宝手势解锁。
    • 支持扩展自定义解锁方式。
  • 多账号支持:
    • 自动切换小号进行能量收集、能量雨、同步步数。
    • 能量雨自动按顺序赠送机会给配置的其他账号。
  • 辅助功能:
    • 自动使用双击卡 (可配置时间段)。
    • 自动浇水回馈 (可配置阈值、数量、黑名单)。
    • 自动执行能量雨 (支持赠送好友机会)。
    • 自动执行保护地巡护。
    • 自动收集神奇海洋能量 (需关闭 3D 模式)。
  • 高级特性:
    • YOLO 目标检测: (实验性) 更智能地识别能量球 (需下载模型)。
    • Shizuku 支持: (实验性) 通过 Shizuku 获取更高权限 (如自动开启无障碍)。
    • 可视化配置: 通过 可视化配置.js 轻松管理所有设置。
    • 配置导入/导出: 方便备份和恢复配置。
    • 自定义扩展: 支持添加自定义解锁和锁屏逻辑。
    • 运行状态显示: 悬浮窗实时展示脚本状态和收集结果。
    • 运行控制: 音量键可延迟或终止脚本。
    • 能量统计: 图表化展示每日/每小时能量收集情况。
  • 健壮性:
    • 通话状态监听 (来电时自动延迟)。
    • 设备姿态检测 (防止锁屏状态下误触)。
    • 自动开启无障碍服务 (需 ADB 或 Shizuku 授权)。

🚀 使用入门

  1. 环境准备:
    • 下载并安装 AutoJS Modify 或 困鱼。
    • 将整个脚本项目文件夹放置到设备的 /sdcard/脚本/ 目录下。
  2. 授权与设置:
    • 打开 AutoJS 应用,下拉刷新列表,找到本项目。
    • 授予 AutoJS 后台弹出界面、显示悬浮窗、自启动、电量无限制 等必要权限。
    • 保持 AutoJS 应用在后台运行(加入电池优化白名单)。
    • 关于截图权限,对于安卓12及以下的,脚本会尝试自动获取权限,但是推荐通过ADB授权,避免频繁弹出询问,对于安卓13及以上的需要ADB授权的同时停用屏幕共享保护。具体参见:ADB授权截图权限,不再弹窗询问
    • (可选) 通过 ADB 授权脚本自动开启无障碍权限。
  3. 首次配置 (重要!):
    • 必须: 首次运行前,请务必运行 可视化配置.js 进行个性化设置,特别是图像相关的配置,否则脚本很可能无法正常工作。详见 配置 小节。
  4. 运行脚本:
    • 直接运行项目或 main.js。
  5. 定时任务:
    • 如需定时自动运行,点击 main.js 右侧的菜单按钮,选择 更多 -> 定时任务 进行配置。
  6. 单脚本运行:
    • 如果遇到提示“有任务正在队列中”,请运行 可视化配置.js -> 高级设置 -> 勾选 单脚本运行。

⚙️ 配置

通过运行 可视化配置.js 进行所有设置。

  • 基本操作:
    • 配置项按类别分组,点击进入相应菜单。
    • 列表项可 左滑 进行删除或修改。
    • 部分输入框 (如区域、颜色) 可 左滑 触发高级编辑控件。
    • 右上角菜单可 重置所有配置 为默认值。
  • 配置管理:
    • 右上角菜单可 导出/导入 配置到 local_config.cfg 文件。
    • 默认使用设备 Android ID 加密,仅本机可用。
    • 跨设备或跨版本同步,需手动获取 device.getAndroidId() (运行 setClip(device.getAndroidId()) 复制) 并在导入时输入。
    • 运行时数据 (如统计) 的导出/导入方式同上。
  • 图像识别配置 (核心):
    • 注: 当开启YOLO识别后,可以跳过该配置,但是也可以配置部分图片用于YOLO识别失败时的保底
    • 重要: 由于手机分辨率和界面差异,必须 前往 查找图片设置,按照说明截取你手机上对应的图片,特别是 逛一逛按钮 等关键识别点。
    • 好友能量球区域: 前往 图像识别相关配置 进行设置。
      • 点击 实时查看可视化配置信息 按钮可预览当前框选区域。
      • 运行 test/全局悬浮窗显示-配置信息.js 可在支付宝界面上叠加显示配置区域,方便调整。
      • 可在 resources 目录下放置截图 region_check.jpg 作为 可视化配置.js 的背景参考。
      • 区域输入框可左滑使用拖动控件调整。
    • 一键收能量: 需要自行配置对应图片才能生效。
  • OCR 配置:
    • 用于识别倒计时等文字信息。
    • 优先级: mlkit-ocr (需插件或修改版AutoJS) > PaddleOCR (需修改版AutoJS且耗电) > 百度OCR (需API Key且有次数限制)。
    • mlkit-ocr: 速度快,准确性尚可,基本满足需求。
    • PaddleOCR: 准确性高,速度慢,必须使用修改版 AutoJS 并设置电量无限制。
    • 可在 可视化配置.js 中调整 OCR 相关设置。

🧩 功能详解

核心运行模式说明

  • 计时模式 (默认):
    • 关闭 循环模式 和 永不停止模式 时启用。
    • 识别好友列表中的倒计时,取最小值。
    • 如果最小值 < 最大等待时间 (可在配置中修改,默认60分钟),则按最小值等待后启动。
    • 否则,脚本停止执行 (等待下一次定时任务)。
  • 循环模式:
    • 在配置中启用 循环模式 并设置次数。
    • 脚本会不间断地执行指定次数后停止。
  • 永不停止模式:
    • 关闭 循环模式 并启用 永不停止模式。
    • 需要设置 重新激活时间 (可设为固定值或随机范围)。
    • 如果识别到的最小倒计时 < 重新激活时间,则按倒计时等待。
    • 如果识别到的最小倒计时 >= 重新激活时间 (或无倒计时),则按 重新激活时间 等待后启动。
    • 实现全天候不间断运行。
  • 自定义模式脚本:
    • unit 目录下提供了预设模式的快捷启动脚本,执行后会中断当前任务并按新模式启动:
      • 自定义1永不停止.js: 25-35分钟随机轮询,适合白天 (如设置每天9点定时任务)。
      • 自定义2计时停止.js: 按倒计时执行 (最长等60分钟),适合早晚收尾 (如设置7点、23点、0点定时任务)。
      • 自定义3循环千次只收自己.js: 循环收自己能量,适合能量生成前运行 (如生成前1分钟定时启动,2分钟后用 自定义2 停止)。
    • 可参考这些文件创建自己的模式。

多账号功能

  1. 配置: 运行 可视化配置.js -> 多账号管理,添加支付宝账号并设置 昵称 (用于能量雨赠送),并勾选一个 主账号。确保添加的账号在当前设备可免密登录切换。
  2. 运行脚本:
    • 自动收集: unit/循环切换小号并收集能量.js (支持小号给大号浇水)。
    • 自动能量雨: unit/循环切换小号并执行能量雨收集.js (建议关闭主脚本的自动能量雨)。能量雨会按 A->B->C->A 的顺序自动赠送机会。
    • 自动同步步数: unit/循环切换小号用于同步数据.js。
    • 森林集市: unit/循环切换小号执行森林集市.js
  3. 定时任务: 为需要的脚本设置定时任务。

能量雨收集

  • 手动启动: 运行 unit/能量雨收集.js (或在可视化配置中开启对应开关),然后进入能量雨界面手动点击开始,脚本会自动接管。
  • 自动启动 (无小号): 对 unit/自动启动并执行能量雨.js 创建定时任务。
  • 自动启动 (有小号): 使用 unit/循环切换小号并执行能量雨收集.js 的定时任务。
  • 配置:
    • 可配置自动赠送好友机会 (支持正则匹配好友名)。
    • 开启TTS语音提醒:默认关闭,需在可视化配置-能量雨设置中开启。开启后可以在脚本遇到人机验证时,触发TTS语音提醒人工介入。
  • 效果: 暴力点击,基本保证满分。

拼手速脚本

  • 手动启动: 运行 unit/拼手速.js 然后进入打地鼠攒能量界面。等倒计时开始时手动点击开始,脚本会自动点击9秒,基本拿满15次。
  • 配置:
    • 首次运行时,请先截图打地鼠界面,在相册中根据截图来配置具体点击的位置。点击 更改点击区域 即可通过拖动条控制点击的位置,操作简单不赘述,自行摸索即可。
    • 演示视频:https://b23.tv/Zazmcwc
  • 效果: 暴力点击,基本保证15次拿满。

森林寻宝

  • 手动启动: 运行 unit/森林寻宝.js 点击 自动获取并执行任务 将通过接口获取互助码,自动给其他人助力获取抽奖机会。
  • 自动运行: 给该脚本设置每日两次的定时任务,避免第一次运行时,互助任务未完成。当定时任务触发时,将自动互助、领取奖励、执行逛一逛、自动消耗抽奖。
  • 配置:
    • 无需特别配置,但是可以分享自己的互助码,点击分享任务,分享到微信,将自动复制互助码,然后通过 上传新的互助码 将互助码上传即可。也可以在 可视化配置 - 寻宝助力 中上传或者获取互助码。可以查看当日被获取的次数、剩余有效期等。如果当日被报告无效次数大于0,建议更新互助码,当达到3次,将自动被删除。
    • 注意互助码目前有效期是一个月,且在当前活动期内有效。请自己注意更新互助码。另外如果你每日活跃使用,你的互助码将会优先被获取,当前逻辑是活跃用户的互助码每日保底被获取3次。
    • 当前寻宝会有两个活动,可以根据上传界面的提示上传两份,但是请不要搞混淆,避免给他人带来麻烦。
  • 效果: 每天大概能获取13次的抽奖机会,完成当期任务完全没问题。

自动巡护

  • 运行: 运行 unit/自动巡护.js 或为其创建定时任务。
  • 功能: 自动将当日步数兑换为 5 次巡护机会,并执行巡护 (每日保底 3+5 次)。

森林集市

  • 运行: 运行 unit/森林集市.js 或为其创建定时任务。
  • 功能: 自动浏览森林集市中的商品以获取相应的奖励能量

神奇海洋收集

  • 运行: 对 unit/神奇海洋收集.js 创建每天 7 点后的定时任务。
  • 配置:
    • 可视化配置 -> 图像识别相关配置 -> 神奇海洋相关配置,按提示配置 OCR 区域、垃圾球角标位置等。
    • 需要 OCR 支持 (至少安装 MlKitOCR 插件或使用修改版 AutoJS)。
  • 重要: 默认无法通过无障碍点击收集,请务必在支付宝的神奇海洋设置中 关闭 3D 模式 (入口: 神奇海洋右上角三点菜单 -> 设置 -> 关闭“3D模式”)。
  • 脚本会尝试 Shizuku 点击,若已关闭 3D 模式,忽略日志中的相关提示即可。

自动开启无障碍权限

  • 需要 ADB 或 Shizuku 授权 WRITE_SECURE_SETTINGS 权限给 AutoJS。

  • ADB 命令 (请将包名替换为你使用的 AutoJS 版本,可通过 context.getPackageName() 获取):

    adb shell pm grant org.autojs.autojs.modify android.permission.WRITE_SECURE_SETTINGS
  • 详细教程: 通过ADB授权脚本自动开启无障碍权限

能量统计

  • 脚本会自动记录能量收集数据。
  • 可在 可视化配置.js 中查看图表化的统计信息。
  • hourly_summary daily_summary

🔧 高级定制

在脚本根目录下新建 extends 文件夹,进行以下自定义:

自定义设备解锁

  • 获取控件信息: 运行 unit/获取锁屏界面控件信息.js,根据提示操作获取布局信息。
  • 创建文件: extends/ExternalUnlockDevice.js
  • 编写代码: 参考 extends/ExternalUnlockDevice-demo.js 实现 unlock 方法。
  • 测试: 运行 test/测试解锁.js。
// ExternalUnlockDevice.js 示例结构
module.exports = function (obj) {
  this.__proto__ = obj; // 继承原型

  this.unlock = function(password) {
    // 在此处编写你的设备解锁逻辑代码
    // 例如:滑动、输入密码等

    // 必须返回解锁检查结果
    return this.check_unlock();
  };
};

自定义锁屏代码

  • 前提: 非 ROOT 设备安卓 9 以上通常可通过无障碍服务锁屏,无需此定制。若无障碍锁屏失败,可使用此方法。
  • 创建文件: extends/LockScreen.js
  • 编写代码: 参考 extends/LockScreen-demo.js 实现自定义锁屏逻辑。
  • 测试: 运行 test/TestLockScreen.js。
// LockScreen.js 示例结构
let { config: _config } = require('../config.js')(runtime, global); // 注意 global 可能需要根据上下文调整

module.exports = function () {
  // 在此处编写你的锁屏逻辑代码
  // 例如:下拉通知栏点击锁屏按钮
  // swipe(800, 10, 800, 1000, 500); // 示例:下拉
  // sleep(500);
  // click(parseInt(_config.lock_x), parseInt(_config.lock_y)); // 示例:点击锁屏按钮坐标
};

分享你的配置

  • 欢迎将你的自定义扩展代码 (如解锁脚本) 提交到 share_configs 分支 的 extends 目录下。
  • 命名建议: ExternalUnlockDevice-手机型号.js。
  • 其他用户可前往该分支下载使用。

💡 实验性功能

YOLO 目标检测

  • 优势: 理论上可以更智能地识别能量球,减少对固定图片和区域配置的依赖。
  • 前提:
    • 使用最新版 AutoJS Modify 或 困鱼。
    • 运行 独立工具/模型下载.js 下载 YOLO 模型 (forest_lite.onnx)。若下载失败,请手动下载 (https://wwxs.lanzoup.com/b042le51i 密码: b034) 并解压到 ./config_data/ 目录下。
  • 启用: 可视化配置 -> 图像识别相关配置 -> 打开 使用YOLO模型识别能量球。若环境不支持或模型未下载,将自动降级。
  • 性能: YOLO 识别速度约 100ms,传统方案约 30-40ms,请自行取舍。默认关闭。

Shizuku 支持

  • 优势: 可通过 Shizuku 获取更高权限,实现如自动授权无障碍等功能。
  • 前提:
    • 安装并激活 Shizuku (详见 Shizuku 官方文档)。
    • 使用最新版 修改版 AutoJS 或 困鱼。
    • 在 AutoJS 的抽屉菜单中启用 Shizuku 并授权。
  • 示例: 独立工具/shizuku示例工具.js 包含通过 Shizuku 授权媒体权限、写入 Secure 设置 (用于自动开无障碍) 等示例。 shizuku

🔄 脚本更新

  • 运行 update/检测更新.js 检查并更新脚本。
  • 也可在 可视化配置.js 的右上角菜单中进行更新。
  • 支持覆盖更新或备份后更新。

❓ 常见问题 (FAQ)

  • 可视化配置.js 异常/白屏/加载失败:
    • 尝试运行 unit/功能测试-重置默认配置.js。
    • 确保使用的是推荐的 AutoJS 版本 (Modify 或 困鱼)。
    • 强制关闭 AutoJS 应用后重试,可能是网络资源加载问题。
  • 报错 Function importClass must be called with a class;...:
    • 强制关闭 AutoJS 应用再打开。通常发生在跨版本更新后,新版脚本已尝试解决。
  • 运行异常/卡顿:
    • 强制关闭 AutoJS 应用后重试。
    • 建议定期强制关闭 AutoJS,避免内存占用过高。
  • 图像识别遗漏/不准:
    • 检查是否关闭了护眼模式/深色模式。
    • 尝试在 可视化配置 中调低 颜色相似度 (默认已改为 20)。
    • 确保关键图片 (如逛一逛) 已按自己手机截图替换。
  • 报错 获取截图失败多次:
    • 在 可视化配置 -> 高级设置 中,尝试增加 获取截图等待时间 (默认 500ms),或取消勾选 是否异步等待截图(但是脚本可能会一直卡死,这个是autojs底层的bug,目前无合适解决方案)。
  • 定时任务不准时:
    • 检查系统电池优化设置,将 AutoJS 设为无限制/允许自启动/后台运行。
    • 系统限制严格时,可考虑使用 Tasker 等工具通过广播触发脚本执行 (需自行研究)。
  • 基于图像分析收取不正常:
    • 若开启 是否直接基于图像分析收取和帮助好友 后运行异常,先取消勾选。
    • 尝试勾选 区域点击来收取能量,并根据需要扩展自定义区域点击代码 (目前无直接扩展接口,需修改源码或等待后续支持)。

🐞 问题反馈

  1. 开启日志: 在 可视化配置.js -> 高级设置 中,勾选 保存日志到文件,并将 日志文件大小 调整为 1024KB 或更大。
  2. 复现问题: 重新运行脚本直到问题出现。
  3. 收集信息:
    • 详细描述问题现象、操作步骤。
    • 提供使用的脚本版本、AutoJS 版本、手机型号、安卓版本。
    • 长截图AutoJS软件中的日志,可以的话再附上日志文件 (logs/log-verboses.log)。日志默认保存 100k,旧日志在 logs/logback。
    • 如有截图或录屏更有助于定位问题。
  4. 提交:
    • 创建 ISSUE (推荐)。
    • 前往论坛反馈 邮箱注册即可,常见的问题后续会逐渐完善上去
    • 如果日志包含隐私信息,可删除敏感部分或通过邮件发送给开发者: tonyjiangwj@gmail.com。

⚠️ 已知问题

  • 收集完一个好友后,可能因未能立即获取其新生成的能量球倒计时而导致少量漏收。
  • 部分系统 (如 MIUI) 的省电策略可能导致 AutoJS 定时任务不准时 (非脚本问题)。
  • 通话状态监听功能可能不稳定,且 Pro 版无法使用。

🔗 相关项目

📜 更新记录

☕ 支持开发者

如果觉得项目对你有帮助,欢迎请我喝杯咖啡!

  • 一元喝速溶、五元喝胶囊、十二买全家、三十三买星巴克,感激不尽!
支付宝 微信 也欢迎支付宝扫码领红包,你领我也得,双赢!
alipay_qrcode wechat_qrcode 扫码领红包
  • 也可以运行 unit/支持作者.js 在线获取红包口令,通过支付宝直接打开领取,每使用一个红包我都可以获取一分钱的收益。如果你不嫌烦的话可以给 unit/支持作者自动版.js 设置定时任务,每天自动领取。

🙏 感谢名单 (部分)

Alipay
*剑
**杰
**佑
**豪
**旸
**渔
**真
**刚
**刚
**亚
**成
*毅
**杰
*之
**旸
*硕
**杰
**宏
**鲁
*赟
*鹏
**杰
**恒
*鹏
**光**彬
**胜
**庭
**光
**杰
**俊
*森
*悦
*森
*剑
**亮
*伟
**飞
**骞
**旻
**锟
**锟
**锟
WeChat
z*g
*鸟
*鸟
*明
*妖
**昌
**昌
**昌
*济
*🧸
A*g
**昌
**昌
*信
**昌
*涛
J*k
*🍅
*🧸
F*sW
**昌
F*sW
**昌
*z
**昌
**昌
*🍃
w*x
*邱
G*n
*河
*己
*漏

About

基于AutoJS的蚂蚁森林收能量脚本

Topics

Resources

Stars

1.6k stars

Watchers

22 watching

Forks

Releases

Used by

Contributors

Languages