如何制作自动开宝箱看广告脚本

HAMI_5018038199 · 2 小时前

回答

Hamibot AI
1
· 2 小时前

制作自动开宝箱并观看广告的脚本,核心是通过 Hamibot 的无障碍服务定位界面控件,模拟点击、等待与返回操作。以下为完整实现方案:

1. 前置准备

  • 在设备设置中开启 Hamibot 的无障碍服务权限。
  • 确保目标应用已安装,且脚本运行时处于前台。
  • 使用 Hamibot 客户端的「布局分析」功能,获取宝箱按钮、广告关闭按钮、领取奖励按钮的准确属性(textiddesc)。

2. 标准脚本模板

// 文档地址 https://docs.hamibot.com/
auto.waitFor();

// 替换为目标应用的实际控件属性
var chestBtnText = "开启宝箱";
var adCloseBtnText = "关闭广告";
var rewardBtnText = "领取奖励";
var maxLoop = 10;

function runOnce() {
    // 1. 点击宝箱
    var chest = text(chestBtnText).findOne(3000);
    if (!chest) {
        toast("未找到宝箱按钮");
        return false;
    }
    chest.click();
    sleep(2000);

    // 2. 等待广告播放(建议根据实际广告时长调整)
    toast("正在观看广告...");
    sleep(20000);

    // 3. 关闭广告
    var closeBtn = text(adCloseBtnText).findOne(3000);
    if (closeBtn) {
        closeBtn.click();
        sleep(1000);
    }

    // 4. 领取奖励
    var reward = text(rewardBtnText).findOne(3000);
    if (reward) {
        reward.click();
        sleep(1500);
    }

    return true;
}

// 主循环
for (var i = 0; i < maxLoop; i++) {
    toast("第 " + (i + 1) + " 次执行");
    if (!runOnce()) {
        toast("执行中断");
        break;
    }
    sleep(2000);
}
toast("脚本运行结束");

3. 关键适配方法

  • 精准定位控件:优先使用 id()desc(),其次使用 text()。若控件文本动态变化,可使用 textContains()className() 配合 findOne()
  • 动态等待替代固定休眠:将 sleep(20000) 替换为 text("跳过").waitFor(30000)id("ad_close_btn").waitFor(30000),可大幅提升脚本响应速度。
  • 处理意外弹窗:在循环开头加入 if (text("确定").exists()) { text("确定").click(); sleep(500); } 拦截系统或应用弹窗。

4. 稳定性与防风控最佳实践

  • 添加随机延迟:sleep(Math.floor(Math.random() * 800) + 400) 模拟人工操作间隔。
  • 避免无限循环:设置最大执行次数或运行时长,防止应用卡死或触发安全策略。
  • 定期重置界面:每执行 3~5 次后调用 back()home() 返回主界面,防止层级过深导致控件查找失败。
  • 开启调试日志:在 Hamibot 控制台将日志级别设为 DEBUG,通过 log() 输出控件匹配状态,快速定位失败节点。

5. 注意事项

  • 自动化操作需遵守目标应用的用户协议,避免用于违规刷量或破坏正常服务秩序。
  • 部分应用会检测无障碍服务或高频模拟点击,建议控制执行频率,并优先使用官方提供的奖励领取接口(如有)。
  • 若脚本在特定机型上失效,通常是因为控件属性随版本更新变化,需重新使用布局分析获取最新选择器。

按上述模板替换控件属性后,即可在 Hamibot 中创建并运行脚本。如需针对特定应用优化选择器或处理复杂广告交互,可提供具体界面控件信息,我将为你调整匹配逻辑。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实