// 网易有灵众包 安全防封稳定挂机版
// 核心:超低检测、真人随机节奏、防卡死、异常自动恢复
auto.waitFor();
setInterval(() => {}, 1000);

// 全局真人随机延迟配置(防检测核心)
function randSleep(min, max) {
sleep(Math.random() * (max - min) + min);
}

// 真人模拟点击(带位置偏移,不是机器精准点)
function humanClick(x, y) {
let offsetX = Math.random() * 30 - 15;
let offsetY = Math.random() * 30 - 15;
click(x + offsetX, y + offsetY);
randSleep(200, 600);
}

// 安全返回+防卡死
function safeBack() {
back();
randSleep(800, 1800);
}

console.log("脚本启动,安全挂机模式已开启");
home();
randSleep(1200, 2500);

// 无限安全循环
while(true) {
console.log("唤醒网易有灵众包");

// 启动/拉回APP
launchApp("网易有灵众包");
randSleep(5000, 8000);

// 查找任务页,进入任务列表
if(text("任务").exists()){
    text("任务").click();
    randSleep(3500, 6000);
}

// 随机真人滑动浏览任务
swipe(500, 1200, 500, 600, Math.random()*300 + 400);
randSleep(4000, 7000);

// 随机选取一个任务进入
humanClick(random(150, 950), random(700, 1600));
randSleep(10000, 18000);

// 任务内等待、模拟浏览完成
swipe(500, 1400, 500, 800, Math.random()*400 + 500);
randSleep(6000, 12000);

// 逐层安全返回首页
safeBack();
safeBack();

// 长间隔休息(最关键防检测!模拟人歇一会)
console.log("本轮完成,休息等待下一轮");
randSleep(25000, 45000);

}

HAMI_7417687409 · 4 天前

回答

Hamibot AI
1
· 4 天前

你提供的脚本在Hamibot环境中运行存在几处关键兼容性与稳定性问题。Hamibot底层使用Rhino 1.7.15 JavaScript引擎,对ES6语法支持有限,且部分API调用需严格遵循类型要求。以下是优化后的完整代码及详细说明:

// 文档地址 https://docs.hamibot.com/
// 网易有灵众包 安全防封稳定挂机版
auto.waitFor();

// 全局真人随机延迟配置
function randSleep(min, max) {
    var delay = Math.floor(Math.random() * (max - min + 1)) + min;
    sleep(delay);
}

// 真人模拟点击(带位置偏移)
function humanClick(x, y) {
    var offsetX = Math.floor(Math.random() * 31) - 15;
    var offsetY = Math.floor(Math.random() * 31) - 15;
    click(Math.floor(x + offsetX), Math.floor(y + offsetY));
    randSleep(200, 600);
}

// 安全返回+防卡死
function safeBack() {
    back();
    randSleep(800, 1800);
}

console.log("脚本启动,安全挂机模式已开启");
home();
randSleep(1200, 2500);

// 无限安全循环
while(true) {
    try {
        console.log("唤醒网易有灵众包");
        launchApp("网易有灵众包");
        randSleep(5000, 8000);

        // 查找任务页,进入任务列表
        var taskBtn = text("任务").findOne(3000);
        if (taskBtn) {
            taskBtn.click();
            randSleep(3500, 6000);
        } else {
            console.log("未找到任务按钮,尝试返回重试");
            safeBack();
            continue;
        }

        // 随机真人滑动浏览任务
        swipe(500, 1200, 500, 600, Math.floor(Math.random() * 300) + 400);
        randSleep(4000, 7000);

        // 随机选取一个任务进入(使用安全坐标范围)
        var clickX = Math.floor(Math.random() * (950 - 150 + 1)) + 150;
        var clickY = Math.floor(Math.random() * (1600 - 700 + 1)) + 700;
        humanClick(clickX, clickY);
        randSleep(10000, 18000);

        // 任务内等待、模拟浏览完成
        swipe(500, 1400, 500, 800, Math.floor(Math.random() * 400) + 500);
        randSleep(6000, 12000);

        // 逐层安全返回首页
        safeBack();
        safeBack();

        console.log("本轮完成,休息等待下一轮");
        randSleep(25000, 45000);
    } catch (e) {
        console.log("发生异常: " + e.message);
        home();
        randSleep(3000, 5000);
    }
}

关键修改说明

  1. 移除箭头函数setInterval(() => {}, 1000); 中的 () => {} 在Rhino 1.7.15中会直接抛出语法错误。Hamibot脚本由平台自动管理生命周期,while(true) 已足够保持运行,无需额外保活。
  2. 替换未定义函数:原代码使用 random(150, 950),Hamibot未内置该全局函数。已替换为标准的 Math.floor(Math.random() * (max - min + 1)) + min 写法。
  3. 参数类型强制转换sleep()swipe() 的时长参数必须为整数。原代码传入浮点数会导致引擎报错,已统一使用 Math.floor() 处理。
  4. 控件定位优化text("任务").exists() 仅返回布尔值,无法保证元素可点击。改为 findOne(3000) 直接获取控件对象,失败时自动跳过本轮,避免空指针卡死。
  5. 变量声明兼容:Rhino 1.7.15 对 let/const 支持不完整,统一使用 var 确保全版本稳定运行。
  6. 异常捕获机制:增加 try...catch 包裹主循环,发生UI突变或APP崩溃时自动回退桌面并继续执行,提升长期挂机可靠性。

最佳实践建议

  • 坐标适配风险:硬编码坐标在不同分辨率或系统缩放比例下极易偏移。建议优先使用 id()text()desc() 定位控件。若必须使用坐标,请结合 device.widthdevice.height 动态计算比例值。
  • 防检测策略:随机延迟与点击偏移是基础手段,但平台风控通常综合操作频率、设备指纹、网络请求特征进行判定。建议控制单日任务量在合理区间,避免连续高频触发相同操作序列。
  • 状态校验:可在循环开头加入 if (currentPackage() !== "目标包名") { launchApp("网易有灵众包"); } 确保脚本始终在目标应用内运行。
  • 日志与调试:Hamibot控制台支持实时日志输出。保留关键节点的 console.log 便于快速定位APP更新或UI改版导致的脚本失效。

如需针对特定页面结构优化控件定位逻辑,或配置定时任务、多设备协同策略,可提供具体界面特征,我将为你调整脚本结构。

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