auto.waitFor();

app.launch("com.ss.android.ugc.aweme");
sleep(8000);

text("同城").click();
sleep(4000);
text("平顶山").click();
sleep(3000);

for (let i = 0; i < 30; i++) {

// 自动留言
if (Math.random() < 0.25) {
    descContains("评论").click();
    sleep(2000);
    setText("平顶山老乡支持一下 👍");
    sleep(1000);
    text("发送").click();
    sleep(1500);
    back();
}

// 下一条
swipe(device.width / 2, device.height * 0.8,
      device.width / 2, device.height * 0.2, 500);
sleep(4000 + Math.random() * 2000);

}
为啥在抖音上用不了?

李益发 · 2 小时前

回答

Hamibot AI
1
· 2 小时前

你的脚本无法在抖音上正常运行,主要由以下几个核心原因导致:

1. 控件匹配方式不可靠

text("同城").click()text("平顶山").click() 依赖精确文本匹配。抖音的UI频繁更新,同城入口通常是底部Tab或顶部滑动标签,实际控件可能使用 descid 或嵌套在 RecyclerView 中。直接调用 text().click() 经常找不到控件或点击无效。

2. 评论输入框限制

抖音的评论输入框是自定义安全控件,setText() 在绝大多数版本中会被拦截,无法写入内容。需要改用剪贴板粘贴或模拟键盘输入。

3. 固定延迟与缺乏容错机制

大量使用 sleep() 会导致脚本在网络波动、设备性能差异或页面加载慢时完全错位。未使用 exists()findOne() 进行状态确认,一旦某一步失败,后续操作全部错乱甚至脚本报错退出。

4. 滑动参数过于机械

固定起点、终点和时长的 swipe 容易被抖音的风控识别为机器行为。建议加入随机偏移和自然时长。


优化后的脚本示例

// 文档地址 https://docs.hamibot.com/
auto.waitFor();
app.launch("com.ss.android.ugc.aweme");
sleep(5000);

// 兼容文本或描述匹配同城入口
if (text("同城").exists()) {
    text("同城").findOne().click();
} else if (desc("同城").exists()) {
    desc("同城").findOne().click();
}
sleep(3000);

// 等待城市列表加载后点击平顶山
var city = text("平顶山").findOne(5000);
if (city) {
    city.click();
    sleep(3000);
} else {
    console.log("未找到平顶山,请手动切换或检查网络");
    exit();
}

for (var i = 0; i < 30; i++) {
    // 随机评论
    if (Math.random() < 0.25) {
        var commentBtn = descContains("评论").findOne(3000);
        if (commentBtn) {
            commentBtn.click();
            sleep(2000);
            // 抖音输入框通常拦截setText,改用剪贴板粘贴
            setClip("平顶山老乡支持一下 👍");
            paste();
            sleep(1000);
            var sendBtn = text("发送").findOne(3000);
            if (sendBtn) sendBtn.click();
            sleep(1500);
            back();
            sleep(1000);
        }
    }

    // 模拟自然滑动,加入随机偏移
    var startX = device.width / 2 + random(-50, 50);
    var startY = device.height * 0.75 + random(-30, 30);
    var endX = device.width / 2 + random(-50, 50);
    var endY = device.height * 0.25 + random(-30, 30);
    var duration = 400 + random(0, 200);
    swipe(startX, startY, endX, endY, duration);
    sleep(3000 + random(1000, 3000));
}

关键改进说明

  • 动态等待替代固定延迟:使用 findOne(timeout) 确保控件加载完成后再执行点击,避免页面未渲染就操作导致的失败。
  • 绕过输入限制:改用 setClip() + paste(),这是目前绕过抖音自定义输入框拦截最稳定的方式。
  • 增强容错:所有关键操作前增加存在性判断,找不到控件时跳过或安全退出,防止脚本崩溃。
  • 降低风控概率:滑动坐标和时长加入 random() 偏移,模拟真人操作轨迹。

使用建议

  1. 使用布局分析工具:抖音版本更新后控件属性可能变化。在 Hamibot 控制台使用“布局分析”功能,实时抓取当前版本的 textdescidclassName,替换脚本中的匹配条件。
  2. 控制运行频率:高频自动化评论和滑动极易触发抖音风控(如限制评论、弹出验证码)。建议单次运行不超过20条,间隔时间拉长,或分时段执行。
  3. 检查无障碍权限:确保 Hamibot 无障碍服务处于开启状态,且抖音未被系统电池优化或后台限制策略拦截。

如果你需要针对特定抖音版本调整控件匹配规则,可以提供布局分析抓取的控件属性,我会帮你进一步精准适配。

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