回答
闲鱼官方对自动化操作有严格的风控策略,频繁或机械化的交互容易触发账号限制。Hamibot 提供基于无障碍服务的 UI 自动化能力,结合外部 AI API 可实现智能决策。以下提供一套兼容 Rhino 1.7.15 引擎的基础脚本框架,涵盖每日任务核心流程、设备适配方法与 AI 接入示例。
基础脚本框架
// 文档地址 https://docs.hamibot.com/
"auto";
var config = {
packageName: "com.taobao.idlefish",
taskList: ["签到", "浏览商品", "点赞"],
maxRetries: 3,
delayMin: 1500,
delayMax: 3500
};
function randomDelay() {
var delay = Math.floor(Math.random() * (config.delayMax - config.delayMin + 1)) + config.delayMin;
sleep(delay);
}
function launchApp() {
launch(config.packageName);
waitForPackage(config.packageName, 8000);
randomDelay();
}
function handlePopups() {
var popupKeywords = ["立即签到", "知道了", "取消", "允许", "稍后再说"];
for (var i = 0; i < popupKeywords.length; i++) {
var btn = text(popupKeywords[i]).findOne(1000) || desc(popupKeywords[i]).findOne(1000);
if (btn) {
btn.click();
randomDelay();
}
}
}
function doSignIn() {
var signInBtn = text("签到").findOne(2000) || desc("签到").findOne(2000) || textContains("签到").findOne(2000);
if (signInBtn) {
signInBtn.click();
randomDelay();
log("签到任务已触发");
} else {
log("未找到签到入口,跳过");
}
}
function doBrowse() {
for (var i = 0; i < 6; i++) {
swipe(device.width / 2, device.height * 0.75, device.width / 2, device.height * 0.25, 800);
randomDelay();
}
}
function doLike() {
var likeBtn = desc("喜欢").findOne(2000) || text("喜欢").findOne(2000);
if (likeBtn) {
likeBtn.click();
randomDelay();
log("点赞完成");
}
}
function main() {
if (!auto.service) {
toast("请开启无障碍服务");
exit();
}
launchApp();
handlePopups();
for (var t = 0; t < config.taskList.length; t++) {
var task = config.taskList[t];
log("开始执行: " + task);
if (task === "签到") doSignIn();
else if (task === "浏览商品") doBrowse();
else if (task === "点赞") doLike();
handlePopups();
randomDelay();
}
log("每日任务执行完毕");
back();
sleep(1000);
home();
}
main();
AI 决策接入方法
Hamibot 本身不内置大语言模型,需通过 HTTP 模块调用外部 AI API 实现智能判断。示例:根据页面截图或文本内容,让 AI 决定下一步操作。
function callAIForDecision(screenText) {
var url = "https://api.your-ai-provider.com/v1/chat/completions";
var payload = {
model: "gpt-3.5-turbo",
messages: [
{ role: "system", content: "你是闲鱼任务助手,仅返回下一步操作指令:click_signin, swipe, like, 或 done。" },
{ role: "user", content: "当前页面文本: " + screenText }
]
};
var res = http.postJson(url, payload, {
headers: { "Authorization": "Bearer YOUR_API_KEY" }
});
if (res.statusCode === 200) {
var json = res.body.json();
return json.choices[0].message.content.trim();
}
return "done";
}
将 callAIForDecision 嵌入任务循环,根据返回指令动态执行对应操作。注意控制请求频率,避免触发 API 限流。
设备适配与稳定性优化
- 避免硬编码坐标:全部使用
text()、desc()、id()或textContains()定位元素,适配不同分辨率。 - 动态延迟:使用
randomDelay()模拟人类操作间隔,降低风控概率。 - 异常恢复:在关键操作后加入
if (!currentPackage().equals(config.packageName)) { launchApp(); }防止应用意外退出。 - 截图与 OCR 备用:当 UI 树无法获取时,使用
captureScreen()配合ocr模块识别关键按钮。 - 日志记录:使用
log()输出执行状态,便于在 Hamibot 控制台查看运行轨迹。
部署与调度
- 将脚本保存为
.js文件,上传至 Hamibot 控制台「开发」→「创建脚本」。 - 在「设备管理」中绑定目标手机,确保无障碍服务与悬浮窗权限已开启。
- 使用「定时任务」功能设置每日执行时间(如 09:00、14:00),Hamibot 会自动唤醒设备并运行脚本。
- 开启「运行日志」与「失败重试」,便于监控任务状态。
合规与安全提醒
- 闲鱼用户协议明确限制自动化操作,脚本仅建议用于个人账号的轻量辅助,避免高频、批量或跨账号操作。
- 不要使用脚本进行刷单、虚假交易、恶意引流等行为,否则可能导致封号。
- 定期更新脚本以适配闲鱼版本迭代,UI 结构变化时需重新定位元素选择器。
- 外部 AI API 调用需自行管理密钥与费用,Hamibot 不提供第三方服务计费。
如需针对特定闲鱼版本或具体每日任务(如“逛一逛”、“鱼塘打卡”、“发布擦亮”)细化逻辑,提供当前页面 UI 结构或任务名称,我可为你补充对应选择器与流程分支。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实