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);
}
为啥在抖音上用不了?
回答
你的脚本无法在抖音上正常运行,主要由以下几个核心原因导致:
1. 控件匹配方式不可靠
text("同城").click() 和 text("平顶山").click() 依赖精确文本匹配。抖音的UI频繁更新,同城入口通常是底部Tab或顶部滑动标签,实际控件可能使用 desc、id 或嵌套在 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()偏移,模拟真人操作轨迹。
使用建议
- 使用布局分析工具:抖音版本更新后控件属性可能变化。在 Hamibot 控制台使用“布局分析”功能,实时抓取当前版本的
text、desc、id或className,替换脚本中的匹配条件。 - 控制运行频率:高频自动化评论和滑动极易触发抖音风控(如限制评论、弹出验证码)。建议单次运行不超过20条,间隔时间拉长,或分时段执行。
- 检查无障碍权限:确保 Hamibot 无障碍服务处于开启状态,且抖音未被系统电池优化或后台限制策略拦截。
如果你需要针对特定抖音版本调整控件匹配规则,可以提供布局分析抓取的控件属性,我会帮你进一步精准适配。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实