手把手带你AutoJS自动化脚本开发指南:抖音自动刷视频+AI玩法全解析(附带原源码工具)
AutoJS 自动化工具介绍
开发工具是自动化中耳熟能详的工具,AutoJS,这个工具是开源免费的,可以自己编译源码定制 app。不想麻烦的直接使用官方的 release 版就行。开发工具就用 VSCode。文章最后给了源码和工具地址,想自己开发自动工具的可以尝试玩玩。
这个工具可以实现手机上任何 app 的自动化,比如:
-
抖音刷视频 -
自动回复 -
微信自动回复 -
短信通知监控 -
回调等信息
未来结合 AI 会有更多玩法。建议先使用官方的 app 尝试下使用功能,再去研究源码。
抖音自动化脚本示例
这是我开发的抖音搜索关键词,自动刷视频脚本。当然你可以基于我的代码继续实现:
-
评论自动回复 -
自动点赞
效果如下:

开发过程
代码基本都是 AI 生成,调试细节即可实现。开发工具是 VSCode 和官方插件。学习下控件的 id 获取和如何点击功能等。
支持打包和自定义 UI,已经将 UI 设计好了,后续完善每一个平台的细节,界面如下:

自动刷抖音详细代码
// 日志函数 - 添加时间戳
function log(message) {
var timestamp = newDate().toLocaleTimeString();
console.log("[" + timestamp + "] " + message);
}
// 主函数
function main() {
isRunning = true
log(“========== 抖音搜索自动化开始 ==========”);
try {
// 打开抖音
log(“准备打开抖音APP”);
launchDouYin();
// 等待抖音加载
log(“等待抖音加载(5秒)”);
sleep(5000);
// 点击搜索按钮
log(“准备点击搜索按钮”);
clickSearchButton();
// 输入搜索关键词
var keyword = “虚拟电商”; // 可以修改为你想搜索的关键词
log(“准备输入搜索关键词: ” + keyword);
inputSearchKeyword(keyword);
// 执行搜索
log(“准备执行搜索操作”);
performSearch();
// 处理搜索结果
log(“准备处理搜索结果”);
processSearchResults();
} catch (e) {
isRunning = false;
log(“脚本执行出错: ” + e);
} finally {
isRunning = false;
log(“========== 抖音搜索自动化结束 ==========”);
}
}
// 打开抖音APP
function launchDouYin() {
var packageName = “com.ss.android.ugc.aweme”; // 抖音包名
log(“正在启动抖音APP,包名: ” + packageName);
launch(packageName);
toast(“正在打开抖音…”);
}
// 点击搜索按钮(优化版)
function clickSearchButton() {
log(“尝试定位搜索按钮…”);
// 多种定位方式组合
var success = false;
// 方式1:通过desc定位
log(“尝试通过desc定位搜索按钮”);
var searchBtn = desc(“搜索”).findOne(2000);
if (searchBtn) {
log(“找到desc定位的搜索按钮,准备点击”);
searchBtn.click();
toast(“通过desc定位点击搜索按钮”);
success = true;
} else {
log(“未找到desc定位的搜索按钮”);
}
sleep(2000);
}
// 输入搜索关键词(使用fullId精准定位)
function inputSearchKeyword(keyword) {
log(“准备输入搜索关键词: ” + keyword);
// 等待搜索输入框出现
log(“尝试通过fullId定位搜索输入框”);
var inputBox = id(“com.ss.android.ugc.aweme:id/et_search_kw”).findOne(3000);
if (inputBox) {
log(“成功定位到搜索输入框,准备输入文本”);
inputBox.setText(keyword);
toast(“成功输入搜索关键词: ” + keyword);
} else {
log(“无法定位搜索框,使用备用方法输入”);
}
sleep(1500);
}
// 执行搜索
function performSearch() {
log(“准备执行搜索操作”);
// 方式2:点击界面搜索按钮
log(“尝试定位界面搜索按钮”);
var searchButton = text(“搜索”).findOne(1000) || desc(“搜索”).findOne(1000)
if(searchButton) {
xy = searchButton.bounds()
log(“找到界面搜索按钮,准备点击”);
click(xy.centerX(), xy.centerY())
}
toast(“正在搜索…”);
log(“已触发搜索操作,等待3秒”);
sleep(3000);
}
function processSearchResults() {
toast(“开始处理搜索结果”);
log(“尝试点击第一个视频”);
var vedioButton = text(“视频”).findOne(1000) || desc(“视频”).findOne(1000)
click(vedioButton.bounds().centerX(), vedioButton.bounds().centerY());
likes = id(“com.ss.android.ugc.aweme:id/n6w”).visibleToUser().find()
// 随机滑动
for( i = 0; i < randomInt(1, 300); i++) {
// 随机滑动
scrollDown();
sleep(500);
}
var firstVideo = id(“com.ss.android.ugc.aweme:id/desc”).visibleToUser().findOne()
click(firstVideo.bounds().centerX(), firstVideo.bounds().centerY());
log(“等待20s第一个视频”);
sleep(22000);
// 滑动查看结果
for (var i = 0; i < 5; i++) {
log(“执行第 ” + (i + 1) + ” 次滑动”);
scrollDown();
log(“等待20s查看视频”);
sleep(randomInt(1500, 3000)); // 随机滑动间隔
log(“看下一个”);
scrollDown()
}
toast(“搜索自动化完成”);
log(“搜索结果处理完成”);
}
// 辅助函数 – 向下滑动
function scrollDown() {
log(“执行向下滑动操作”);
var x = device.width / 2;
var startY = device.height * 2 / 3;
var endY = device.height / 3;
swipe(x, startY, x, endY, 500);
print(“滑动完成” + startY + “——>” + endY)
}
function scrollUp() {
log(“执行向上滑动操作”);
var x = device.width / 2;
var startY = device.height * 2 / 3;
var endY = device.height / 2;
swipe(x, endY, x, startY, 500);
print(“滑动完成” + startY + “——>” + endY)
}
function randomInt(min, max) {
returnMath.floor(Math.random() * (max – min + 1)) + min;
}
// 运行主函数
// main();
var i = 1;
var max = 20;
var isRunning = false; // flag: 标记 main() 是否正在执行
function runLoop() {
while (1) {
if (i >= max) {
console.log(“所有任务完成”);
return;
}
console.log(“开始第 ” + i + ” 次运行” + isRunning);
if (!isRunning) { // 如果 main() 没在执行
console.log(“第 ” + i + ” 次运行”);
i++;
main()
}
}
}runLoop(); // 启动
暂无评论内容