一个聚合多个 APP 签到任务的 Auto.js 脚本,轻松薅羊毛。
https://wwxs.lanzouq.com/b042le51i (密码: b034)可视化配置.js 方便地管理签到任务、执行时间、分组等。/sdcard/脚本/ 目录下。后台弹出界面、显示悬浮窗、自启动、电量无限制 等必要权限。main.js 右侧的菜单按钮,选择 更多 -> 定时任务。main.js 设置一个 每天 0 点 左右执行的定时任务。此任务用于生成当天的随机执行计划。可视化配置.js。签到设置,勾选你想要自动执行的签到任务。设置执行时间,可以单独设置,也可以绑定到预设的分组。更多设置,根据提示配置图像节点或其他参数。管理执行分组 中创建和配置执行分组。签到设置 界面点击 查看执行计划。生成执行计划 来创建或更新计划。之后可以查看当天的任务安排。可视化配置.js):
main.js 的 0 点定时任务负责调用内部逻辑,生成一整天的、时间点随机打散的签到计划。管理执行分组 中创建三个分组,分别设置随机时间段:分组A (7-9点),分组B (10-12点),分组C (16-18点)。签到设置 中:
需要 ADB 或 Shizuku 授权 WRITE_SECURE_SETTINGS 权限给 AutoJS。
ADB 命令 (请将包名替换为你使用的 AutoJS 版本,可通过 context.getPackageName() 获取):
adb shell pm grant org.autojs.autojs.modify android.permission.WRITE_SECURE_SETTINGS
详细教程: 通过ADB授权脚本自动开启无障碍权限
如果你想添加列表中没有的签到任务,可以按照以下步骤进行:
extends/CustomConfig.js (可参考 extends/CustomConfig-demo.js)。// extends/CustomConfig.js 示例
module.exports = {
supported_signs: [
// ... 你可以添加多个自定义任务
{
name: '我的应用签到', // 任务显示名称
taskCode: 'MyAppSign', // 任务唯一标识符 (英文数字)
script: 'MyAppSign.js', // 对应的签到脚本文件名 (需放在 core/ 目录下)
enabled: true, // 默认是否启用
// 如果有子任务 (例如一个应用内有多个签到点)
subTasks: [
{
taskCode: 'dailyCheckin', // 子任务唯一标识符
taskName: '每日签到', // 子任务显示名称
enabled: true, // 默认是否启用子任务
},
{
taskCode: 'bonusPoints',
taskName: '领额外积分',
enabled: false,
}
]
},
// ... 其他自定义任务
]
}
extends/CustomSignConfig.js (可参考 extends/CustomSignConfig-demo.js)。// extends/CustomSignConfig.js 示例
module.exports = function (binder) {
/**
* 绑定自定义配置
* @param {string} prefix - 配置前缀 (需唯一, 建议与 taskCode 相关)
* @param {object} initialValues - 配置项的初始值 (如果只有图片配置, 可传 {})
* @param {string[]} imageFields - 需要配置的图片字段列表 (可选)
*/
binder.bindCustomSignConfig(
'my_app_sign', // 配置前缀 (将在 config 对象中以 my_app_sign_config 访问)
{ // 初始值
username: '',
click_point: { x: 500, y: 1500 },
some_option: true,
},
[ // 需要配置的图片 (会在“更多设置”中显示图片配置项)
'login_button_image',
'signin_success_image',
]
);
}
// 在你的签到脚本 (core/MyAppSign.js) 中获取配置:
// let { config } = require('../config.js')(runtime, global);
// let username = config.my_app_sign_config.username;
// let loginBtnImg = config.my_app_sign_config.login_button_image;
core/ 目录下创建与步骤 1 中 script 字段同名的 JS 文件 (例如 core/MyAppSign.js)。BaseSignRunner 并实现 exec 方法。// core/MyAppSign.js 示例
let { config } = require('../config.js')(runtime, global);
let singletonRequire = require('../lib/SingletonRequirer.js')(runtime, global);
let FloatyInstance = singletonRequire('FloatyUtil'); // 悬浮窗工具
let widgetUtils = singletonRequire('WidgetUtils'); // 控件操作工具
let automator = singletonRequire('Automator'); // 自动化操作封装
let commonFunctions = singletonRequire('CommonFunction'); // 常用函数
// let localOcrUtil = require('../lib/LocalOcrUtil.js'); // 本地OCR (如果需要)
let BaseSignRunner = require('./BaseSignRunner.js'); // 引入基类
function MyAppSignRunner() {
BaseSignRunner.call(this); // 调用父类构造函数
// 实现签到执行逻辑
this.exec = function () {
FloatyInstance.setFloatyInfo('开始执行我的应用签到...');
commonFunctions.launchPackage(config.my_app_sign_config.package_name); // 假设配置了包名
// --- 无子任务的简单示例 ---
if (!this.isTaskExecuted()) { // 检查今天是否已执行过
// ... 在这里编写打开APP、查找按钮、点击签到等逻辑 ...
// let loginBtn = widgetUtils.widgetGetOne(config.my_app_sign_config.login_button_image, 5000);
// if (loginBtn) { automator.clickWidget(loginBtn); }
// ... 更多逻辑 ...
let success = true; // ... 判断是否签到成功 ...
if (success) {
this.setExecuted(); // 标记任务已完成
FloatyInstance.setFloatyInfo('我的应用签到完成');
} else {
FloatyInstance.setFloatyWarning('我的应用签到失败');
}
}
// --- 有子任务的示例 ---
// 检查并执行子任务 'dailyCheckin'
if (!this.isSubTaskExecuted({ taskCode: 'dailyCheckin' })) {
if (this.doDailyCheckin()) { // 假设 doDailyCheckin 是签到逻辑函数
this.setSubTaskExecuted({ taskCode: 'dailyCheckin' }); // 标记子任务完成
}
}
// 检查并执行子任务 'bonusPoints'
if (!this.isSubTaskExecuted({ taskCode: 'bonusPoints' })) {
if (this.doBonusPoints()) {
this.setSubTaskExecuted({ taskCode: 'bonusPoints' });
}
}
commonFunctions.recycle(); // 回收资源
};
// (可选) 封装子任务逻辑
this.doDailyCheckin = function() {
FloatyInstance.setFloatyInfo('执行每日签到子任务...');
// ... 每日签到具体逻辑 ...
return true; // 返回是否成功
}
this.doBonusPoints = function() {
FloatyInstance.setFloatyInfo('执行领额外积分子任务...');
// ... 领积分具体逻辑 ...
return true;
}
}
// 设置继承关系
MyAppSignRunner.prototype = Object.create(BaseSignRunner.prototype);
MyAppSignRunner.prototype.constructor = MyAppSignRunner;
// 导出实例
module.exports = new MyAppSignRunner();
test/测试签到功能.js 文件,将其中的 require 指向你刚创建的脚本。// test/测试签到功能.js 修改示例
// ... 其他代码 ...
// 将 'core/DingDong.js' 替换为你自己的脚本路径
let signRunner = require('../core/MyAppSign.js');
// 设置任务名称 (用于日志和悬浮窗显示) 并执行
signRunner.setName('测试我的应用签到').exec();
// ... 其他代码 ...
test/测试签到功能.js 来单独测试你的签到逻辑是否正常工作。可视化配置.js -> 签到设置。查看执行计划,点击 生成执行计划,你的新任务就会被纳入自动执行计划中。
update/检测更新.js 检查并更新脚本。update/说明-重要.txt 文件。可视化配置.js -> 高级设置 中,勾选 保存日志到文件,并将 日志文件大小 调整为 1024KB 或更大。logs/log-verboses.log)。日志默认保存 100k,旧日志在 logs/logback。如果觉得项目对你有帮助,欢迎请我喝杯咖啡!
| 支付宝 | 微信 | 也欢迎支付宝扫码领红包,你领我也得,双赢! |
|---|---|---|
![]() | ![]() | ![]() |
unit/支持作者.js 在线获取红包口令,通过支付宝直接打开领取,每使用一个红包我都可以获取一分钱的收益。如果你不嫌烦的话可以给 unit/支持作者自动版.js 设置定时任务,每天自动领取。3 followers · starred Apr 2021
一个聚合多个 APP 签到任务的 Auto.js 脚本,轻松薅羊毛。
https://wwxs.lanzouq.com/b042le51i (密码: b034)可视化配置.js 方便地管理签到任务、执行时间、分组等。/sdcard/脚本/ 目录下。后台弹出界面、显示悬浮窗、自启动、电量无限制 等必要权限。main.js 右侧的菜单按钮,选择 更多 -> 定时任务。main.js 设置一个 每天 0 点 左右执行的定时任务。此任务用于生成当天的随机执行计划。可视化配置.js。签到设置,勾选你想要自动执行的签到任务。设置执行时间,可以单独设置,也可以绑定到预设的分组。更多设置,根据提示配置图像节点或其他参数。管理执行分组 中创建和配置执行分组。签到设置 界面点击 查看执行计划。生成执行计划 来创建或更新计划。之后可以查看当天的任务安排。可视化配置.js):
main.js 的 0 点定时任务负责调用内部逻辑,生成一整天的、时间点随机打散的签到计划。管理执行分组 中创建三个分组,分别设置随机时间段:分组A (7-9点),分组B (10-12点),分组C (16-18点)。签到设置 中:
需要 ADB 或 Shizuku 授权 WRITE_SECURE_SETTINGS 权限给 AutoJS。
ADB 命令 (请将包名替换为你使用的 AutoJS 版本,可通过 context.getPackageName() 获取):
adb shell pm grant org.autojs.autojs.modify android.permission.WRITE_SECURE_SETTINGS
详细教程: 通过ADB授权脚本自动开启无障碍权限
如果你想添加列表中没有的签到任务,可以按照以下步骤进行:
extends/CustomConfig.js (可参考 extends/CustomConfig-demo.js)。// extends/CustomConfig.js 示例
module.exports = {
supported_signs: [
// ... 你可以添加多个自定义任务
{
name: '我的应用签到', // 任务显示名称
taskCode: 'MyAppSign', // 任务唯一标识符 (英文数字)
script: 'MyAppSign.js', // 对应的签到脚本文件名 (需放在 core/ 目录下)
enabled: true, // 默认是否启用
// 如果有子任务 (例如一个应用内有多个签到点)
subTasks: [
{
taskCode: 'dailyCheckin', // 子任务唯一标识符
taskName: '每日签到', // 子任务显示名称
enabled: true, // 默认是否启用子任务
},
{
taskCode: 'bonusPoints',
taskName: '领额外积分',
enabled: false,
}
]
},
// ... 其他自定义任务
]
}
extends/CustomSignConfig.js (可参考 extends/CustomSignConfig-demo.js)。// extends/CustomSignConfig.js 示例
module.exports = function (binder) {
/**
* 绑定自定义配置
* @param {string} prefix - 配置前缀 (需唯一, 建议与 taskCode 相关)
* @param {object} initialValues - 配置项的初始值 (如果只有图片配置, 可传 {})
* @param {string[]} imageFields - 需要配置的图片字段列表 (可选)
*/
binder.bindCustomSignConfig(
'my_app_sign', // 配置前缀 (将在 config 对象中以 my_app_sign_config 访问)
{ // 初始值
username: '',
click_point: { x: 500, y: 1500 },
some_option: true,
},
[ // 需要配置的图片 (会在“更多设置”中显示图片配置项)
'login_button_image',
'signin_success_image',
]
);
}
// 在你的签到脚本 (core/MyAppSign.js) 中获取配置:
// let { config } = require('../config.js')(runtime, global);
// let username = config.my_app_sign_config.username;
// let loginBtnImg = config.my_app_sign_config.login_button_image;
core/ 目录下创建与步骤 1 中 script 字段同名的 JS 文件 (例如 core/MyAppSign.js)。BaseSignRunner 并实现 exec 方法。// core/MyAppSign.js 示例
let { config } = require('../config.js')(runtime, global);
let singletonRequire = require('../lib/SingletonRequirer.js')(runtime, global);
let FloatyInstance = singletonRequire('FloatyUtil'); // 悬浮窗工具
let widgetUtils = singletonRequire('WidgetUtils'); // 控件操作工具
let automator = singletonRequire('Automator'); // 自动化操作封装
let commonFunctions = singletonRequire('CommonFunction'); // 常用函数
// let localOcrUtil = require('../lib/LocalOcrUtil.js'); // 本地OCR (如果需要)
let BaseSignRunner = require('./BaseSignRunner.js'); // 引入基类
function MyAppSignRunner() {
BaseSignRunner.call(this); // 调用父类构造函数
// 实现签到执行逻辑
this.exec = function () {
FloatyInstance.setFloatyInfo('开始执行我的应用签到...');
commonFunctions.launchPackage(config.my_app_sign_config.package_name); // 假设配置了包名
// --- 无子任务的简单示例 ---
if (!this.isTaskExecuted()) { // 检查今天是否已执行过
// ... 在这里编写打开APP、查找按钮、点击签到等逻辑 ...
// let loginBtn = widgetUtils.widgetGetOne(config.my_app_sign_config.login_button_image, 5000);
// if (loginBtn) { automator.clickWidget(loginBtn); }
// ... 更多逻辑 ...
let success = true; // ... 判断是否签到成功 ...
if (success) {
this.setExecuted(); // 标记任务已完成
FloatyInstance.setFloatyInfo('我的应用签到完成');
} else {
FloatyInstance.setFloatyWarning('我的应用签到失败');
}
}
// --- 有子任务的示例 ---
// 检查并执行子任务 'dailyCheckin'
if (!this.isSubTaskExecuted({ taskCode: 'dailyCheckin' })) {
if (this.doDailyCheckin()) { // 假设 doDailyCheckin 是签到逻辑函数
this.setSubTaskExecuted({ taskCode: 'dailyCheckin' }); // 标记子任务完成
}
}
// 检查并执行子任务 'bonusPoints'
if (!this.isSubTaskExecuted({ taskCode: 'bonusPoints' })) {
if (this.doBonusPoints()) {
this.setSubTaskExecuted({ taskCode: 'bonusPoints' });
}
}
commonFunctions.recycle(); // 回收资源
};
// (可选) 封装子任务逻辑
this.doDailyCheckin = function() {
FloatyInstance.setFloatyInfo('执行每日签到子任务...');
// ... 每日签到具体逻辑 ...
return true; // 返回是否成功
}
this.doBonusPoints = function() {
FloatyInstance.setFloatyInfo('执行领额外积分子任务...');
// ... 领积分具体逻辑 ...
return true;
}
}
// 设置继承关系
MyAppSignRunner.prototype = Object.create(BaseSignRunner.prototype);
MyAppSignRunner.prototype.constructor = MyAppSignRunner;
// 导出实例
module.exports = new MyAppSignRunner();
test/测试签到功能.js 文件,将其中的 require 指向你刚创建的脚本。// test/测试签到功能.js 修改示例
// ... 其他代码 ...
// 将 'core/DingDong.js' 替换为你自己的脚本路径
let signRunner = require('../core/MyAppSign.js');
// 设置任务名称 (用于日志和悬浮窗显示) 并执行
signRunner.setName('测试我的应用签到').exec();
// ... 其他代码 ...
test/测试签到功能.js 来单独测试你的签到逻辑是否正常工作。可视化配置.js -> 签到设置。查看执行计划,点击 生成执行计划,你的新任务就会被纳入自动执行计划中。
update/检测更新.js 检查并更新脚本。update/说明-重要.txt 文件。可视化配置.js -> 高级设置 中,勾选 保存日志到文件,并将 日志文件大小 调整为 1024KB 或更大。logs/log-verboses.log)。日志默认保存 100k,旧日志在 logs/logback。如果觉得项目对你有帮助,欢迎请我喝杯咖啡!
| 支付宝 | 微信 | 也欢迎支付宝扫码领红包,你领我也得,双赢! |
|---|---|---|
![]() | ![]() | ![]() |
unit/支持作者.js 在线获取红包口令,通过支付宝直接打开领取,每使用一个红包我都可以获取一分钱的收益。如果你不嫌烦的话可以给 unit/支持作者自动版.js 设置定时任务,每天自动领取。3 followers · starred Apr 2021