// 网易有灵众包 安全防封稳定挂机版
// 核心:超低检测、真人随机节奏、防卡死、异常自动恢复
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);
}
回答
你提供的脚本在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);
}
}
关键修改说明
- 移除箭头函数:
setInterval(() => {}, 1000);中的() => {}在Rhino 1.7.15中会直接抛出语法错误。Hamibot脚本由平台自动管理生命周期,while(true)已足够保持运行,无需额外保活。 - 替换未定义函数:原代码使用
random(150, 950),Hamibot未内置该全局函数。已替换为标准的Math.floor(Math.random() * (max - min + 1)) + min写法。 - 参数类型强制转换:
sleep()与swipe()的时长参数必须为整数。原代码传入浮点数会导致引擎报错,已统一使用Math.floor()处理。 - 控件定位优化:
text("任务").exists()仅返回布尔值,无法保证元素可点击。改为findOne(3000)直接获取控件对象,失败时自动跳过本轮,避免空指针卡死。 - 变量声明兼容:Rhino 1.7.15 对
let/const支持不完整,统一使用var确保全版本稳定运行。 - 异常捕获机制:增加
try...catch包裹主循环,发生UI突变或APP崩溃时自动回退桌面并继续执行,提升长期挂机可靠性。
最佳实践建议
- 坐标适配风险:硬编码坐标在不同分辨率或系统缩放比例下极易偏移。建议优先使用
id()、text()、desc()定位控件。若必须使用坐标,请结合device.width与device.height动态计算比例值。 - 防检测策略:随机延迟与点击偏移是基础手段,但平台风控通常综合操作频率、设备指纹、网络请求特征进行判定。建议控制单日任务量在合理区间,避免连续高频触发相同操作序列。
- 状态校验:可在循环开头加入
if (currentPackage() !== "目标包名") { launchApp("网易有灵众包"); }确保脚本始终在目标应用内运行。 - 日志与调试:Hamibot控制台支持实时日志输出。保留关键节点的
console.log便于快速定位APP更新或UI改版导致的脚本失效。
如需针对特定页面结构优化控件定位逻辑,或配置定时任务、多设备协同策略,可提供具体界面特征,我将为你调整脚本结构。