news 2026/9/25 1:13:32

Auto.js脚本实战:抖音快手自动化操作与环境搭建指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Auto.js脚本实战:抖音快手自动化操作与环境搭建指南

简介:这是一套面向抖音、快手等移动平台自动化需求的Auto.js脚本合集,适合希望用脚本简化重复操作的运营人员、测试者及Android自动化入门用户。压缩包共含1669个文件,几乎全部为.js脚本,另带1个txt说明文档,整包仅4.22MB,轻量易分发。脚本种类覆盖多个场景:自动刷视频可模拟滑屏、定时点赞评论,减轻手动盯屏负担;养号脚本通过模拟真人浏览、互动与发布习惯,辅助提升账号活跃度和权重;私信脚本支持批量发送定制消息,便于推广或客服场景使用;此外还包含多多果园、蚂蚁森林、旅行世界等游戏自动浇水、收能量、合成物品的辅助逻辑。这些脚本基于JavaScript编写,可运行于Auto.js环境,既可直接落地,也适合作为学习自动化编程的参考案例。目前已有18309人学习下载,对于深入理解移动端脚本开发思路、快速搭建个人自动化工具链具有不错参考价值。

1. 抖音快手脚本合集:先搞清楚它能做什么、哪些事做不到

第一次双击这份 rar 压缩包的人,最容易犯的错是以为解压、导入、点一下运行,脚本就能自动跑起来。抖音快手等热门脚本合集,本质上是一套基于 auto.js 的脚本包,主要覆盖点赞、关注、刷视频、定时启动这类需要手指反复点击的重复操作。它能替你省下的不是创意,而是每天几十分钟的机械劳动。

这份资源适合三类人:做内容运营、需要定时维护多个账号素材的;做 App 自动化测试、想拿短视频应用当试验田的;以及单纯想搞明白无障碍服务怎么控制一台手机的人。但丑话说在前面:脚本不是万能外挂,换一台手机不调坐标,它连“关注”按钮都找不到。能不能用,不取决于压缩包本身,取决于你有没有把环境搭对。

2. 环境搭建:把 Auto.js、脚本文件和无障碍权限三件事串起来

2.1 解压后先别急着跑:文件结构与必改项

把 rar 解压后,你会看到一堆 .js 后缀的脚本文件,命名一般都很直白,像douyin_follow.jskuaishou_swipe.jscommon.js。有的包里还带一个img/目录,放着找图匹配用的模板;再配一份说明.txt或者参数说明.md,记录每个脚本对应的 App 版本、分辨率和默认参数。

我拿到任何脚本包的第一件事,是先看说明文件,不是先运行。说明会写清这套脚本基于哪一版 Auto.js、目标 App 版本、分辨率适配范围,以及哪些参数是必须改的。如果说明缺失,就用文本编辑器把脚本逐个打开,先看文件顶部的totalintervalsleep这类变量,通常它们就是你需要调整的所有入口。

文件名类型作用
douyin_follow.js主脚本抖音关注循环
kuaishou_swipe.js主脚本快手滑动/点赞
common.js公共模块设备参数与日志封装
img/*.png资源找图匹配的模板
说明.txt文档适配范围与默认参数

从这个表格能看出,脚本包不是单个文件就能用,公共逻辑多半抽在common.js里。很多人改完主脚本运行报错,就是因为公共模块没拷到同一目录,或者用编辑器改坏了 UTF-8 编码。

2.2 安装 Auto.js:版本选择的第一坑

接下来是装 Auto.js 本体。免费版 4.1.0 是目前能稳定跑绝大多数这类脚本的版本,功能上支持text()desc()click()swipe()等常用 API。Pro 付费版对新手并不友好,它改动了不少 API,老脚本丢进 Pro 里经常直接报ReferenceError: xxx is not defined。所以压缩包里如果直接带了安装包,优先用自带的版本,别自己装最新版。

把安装包复制到手机存储,用文件管理器打开安装。部分国产 ROM 默认开启“纯净模式”或“拦截未知来源”,需要在设置里临时关闭,装完再开回来也无所谓。装好后打开 Auto.js,主页会直接显示无障碍、悬浮窗两项权限的开通状态,先别急着导入脚本,把这两项权限给全。

2.3 把两个权限开全:无障碍服务与悬浮窗

无障碍服务路径是系统设置 → 无障碍 → 已下载的服务 → Auto.js,不同品牌叫法略有区别,但入口一定在“无障碍”或“辅助功能”里。悬浮窗是另一个独立权限,对应设置里的“显示悬浮窗”或“后台弹出界面”。不开无障碍,Auto.js 就不能替别的 App 发送点击事件;不开悬浮窗,脚本还能跑,只是不方便手动暂停。

授予权限后别忘了在电池优化、省电策略里把 Auto.js 设为“不限制”。身边人的血泪经验是:权限明明开了,脚本跑到一半仍然停,原因就是系统在后台把它杀了。尤其是 MIUI、EMUI 这一档的 ROM,省电策略默认对第三方应用很激进。

2.4 用最小脚本确认环境真的通了

这里给你一个最小验证脚本:

// test.js —— 第一个探测脚本,确认 Auto.js 环境可用 toast("脚本开始执行"); // 屏幕中部弹出短暂提示 log("Toast 已显示"); var pkg = currentPackage(); // 获取当前前台应用包名 log("当前前台应用包名: " + pkg);

toast()用来确认脚本引擎能跑通,log()把信息写进 Auto.js 日志面板,currentPackage()返回当前前台应用的包名。如果这条脚本运行后在日志面板看到包名,说明无障碍服务和悬浮窗状态正常,脚本可以继续往下接。

参数说明:这里没有任何参数,但值得记一下包名的返回值。抖音正式包通常是com.ss.android.ugc.aweme,快手是com.smile.gifmaker。后续调试时,可以用它判断脚本是否真的停在了抖音或快手界面。

3. 核心原理:控件点击、坐标点击与定时轮询的取舍

3.1 无障碍服务:脚本的那根“手指”

auto.js 脚本本质上是在模拟一次手指点击,区别是它不读像素,而是通过无障碍服务拿到当前界面的视图层级,再找到控件节点,向它发送一个点击事件。所以很多脚本看起来像“自己长了眼睛”,其实只是 XML 控件树里检索可点击节点。这和自动化测试脚本的思路是同源的,只是驱动对象从电脑浏览器变成了手机 App。

也是因为这样,当界面是 WebView、Flutter 或游戏引擎绘制时,脚本会失效。这些技术生成的界面没有标准的 Android 控件树,text()查不到内容,脚本就像手指戳到一块玻璃上,没有任何反馈。遇到这种情况才轮到底层的坐标点击或图色匹配。

3.2 三种操作方式:控件、坐标、图色怎么选

操作方式稳定性适配成本适用场景
控件点击文案/结构变了就失效文字按钮、常规列表
坐标点击分辨率一变就错底部栏、固定按钮
图色匹配需要模板图和阈值自绘界面、无文字控件

实际脚本里,三者往往是混用的。查找关注按钮优先用控件;找不到时落到固定坐标;找图匹配放到最后兜底,因为它要做全屏截图再比对模板,速度慢不少。可以理解为:控件是正规军,坐标是快速通道,找图是最后一招。

3.3 控件查找的三种姿势:text、desc、className

// 查找“关注”两个字的按钮 var btn = text("关注").findOne(2000); if (btn != null) { btn.click(); log("点击了关注按钮"); } else { log("没有找到关注按钮"); }

text("关注")匹配界面上的文字,findOne(2000)表示在 2 秒内不断尝试查找,找不到返回 null。所以点击前必须做空判断,不能直接调btn.click(),否则脚本会报空指针错误直接中断。

另外两个常用选择器是desc()className()。很多图标按钮没有文字,只有content-desc属性,这时候就用desc("xxx").findOne()className()按控件类型找,比如所有android.widget.Button,但实践中结果太多容易点错,我一般只在排查时用。

3.4 坐标与滑动:真机适配的基准值

控件不可用时,就要落到坐标。以主流的 1080×2400 分辨率为例:

// 从屏幕高度 70% 处滑到 30% 处,模拟翻页 var x = device.width / 2; swipe(x, device.height * 0.7, x, device.height * 0.3, 400);

device.widthdevice.height是当前设备分辨率。swipe四参数里前两个是按下位置,后两个是抬起位置,最后一个 400 是滑动动画时长。动画太短可能没触发系统的滑动手势判定,太长又会拖慢节奏,一般建议 300~500 毫秒。

写死坐标最容易翻车的是在不同分辨率手机上跑,所以脚本里尽量用device.width * 0.7这类比例写法,而不是1080 * 0.7的固定像素。比例写法解决的是像素密度适配问题,不是屏幕宽高比问题,如果换了台长宽比完全不同的机器,比例系数还是得微调。

4. 实战调参:关注、点赞与滑动节奏的数值经验值

4.1 循环结构和时间参数:把“跑多久”控制住

所有抖音快手脚本的骨架都是 while 循环,区别只在循环里的动作和退出条件。先看最基础的模板:

var maxCount = 20; // 总次数 var intervalMs = 4000; // 两次循环间隔,毫秒 var currentCount = 0; while (currentCount < maxCount) { // 核心操作:关注、点赞、滑动、截图等 currentCount++; log("已完成第 " + currentCount + " 次,剩余 " + (maxCount - currentCount) + " 次"); sleep(intervalMs); }

maxCountintervalMs是最常改的两个参数。sleep()的作用不只是控制节奏,还顺便等页面加载完。间隔太短,脚本和平台风控都受不了;间隔太长,跑 50 次要睡 4 分钟起步,效率太低。我做实验时一般从 3000 毫秒开始,稳定后再慢慢降到 2000。

退出条件也不一定非要跑满次数,可以加上页面状态判断,比如连续 N 次找不到关注按钮就主动结束,防止脚本在错误界面空转。合集里多数脚本都带这种保护,改脚本时先确认退出逻辑在哪,别把循环改成死循环。

4.2 抖音关注脚本:完整可改版

下面这套脚本就是合集里常见抖音关注逻辑的简化版,改一下参数就能跑:

var maxFollow = 30; // 本次关注上限 var count = 0; while (count < maxFollow) { // 在推荐流中查找“关注”按钮,最多等 3 秒 var followBtn = text("关注").findOne(3000); if (followBtn) { followBtn.click(); log("关注成功: " + (count + 1) + "/" + maxFollow); } else { log("当前卡片没有关注按钮,直接翻页"); } // 上滑进入下一条视频 swipe(device.width / 2, 1800, device.width / 2, 700, 400); count++; // 3~5 秒随机等待,避免固定间隔 var randomWait = 3000 + Math.floor(Math.random() * 2000); sleep(randomWait); }

Math.random()生成 0~1 的随机数,乘 2000 得到 0~2000 的随机毫秒,加上 3000 就是 3~5 秒。随机等待的目的不是骗过谁,而是让操作节奏更接近人手,避免总是在同一秒内发请求。

注意这里swipe的 y 坐标写的是 1800 和 700,默认适配 1080×2400 分辨率。如果你的手机是其他分辨率,把它改成device.height * 0.75device.height * 0.3更稳。

4.3 快手的不同之处:双列流里的进入与退出

快手首页是双列瀑布流,和抖音单列沉浸式完全不一样。直接在首页盲滑,看到的永远是卡片封面,没有关注按钮可点,所以脚本要先进作品详情页再找按钮。如果脚本包里快手部分的逻辑和你预期不符,问题多半出在这里。

一个补救的写法是:

// 点击首页第一个视频卡片,大约在屏幕左上角区域 click(device.width * 0.25, device.height * 0.25); sleep(2000); var followBtn = text("关注").findOne(3000); if (followBtn) { followBtn.click(); log("快手关注成功"); } // 返回推荐流 back(); sleep(1500);

参数说明:点击位置取的是卡片中心附近比例坐标,sleep(2000)等页面加载,back()返回上一级。快手脚本失效的最常见原因是 App 改版把入口位置移动,导致点击坐标落空,出现这种情况时优先更新脚本而不是改坐标。

4.4 多分辨率适配:用比例代替写死的像素

适配不同手机是脚本包最容易踩坑的点。我见过最多的错误写法是click(540, 2200)这种按 1080×2400 算出来的固定坐标,换台 1440×3200 的手机,点下去大概率落到输入框或评论列表上。

用比例计算是更稳的方案:

// 底部关注按钮大约在屏幕 90% 高度处 var x = device.width * 0.5; var y = device.height * 0.9; click(x, y);

device.widthdevice.height返回的是当前设备的实际分辨率,乘以比例得到目标位置。同样是“底部按钮”,各家 ROM 的导航栏高度不同,90% 这个系数不一定准,所以脚本包的说明里通常会写明适配范围。坐标不是玄学,只要按比例抽出来,换机后最多微调一两个系数。

5. 脚本失效排查:五个常见翻车现场与修复路径

5.1 现象:跑到一半自动停止,日志没有任何报错

脚本运行几分钟后自动停了,日志面板干干净净,Auto.js 主界面还活着,像是被人点了暂停。这种问题最隐蔽,十次里有八次是系统后台策略干的。国产 ROM 默认对第三方应用很苛刻,Auto.js 在后台运行一段时间后会被标记为“长时间未使用”,然后被系统杀死。

解决路径:系统设置里搜“电池优化”或“省电策略”,把 Auto.js 设为“不限制”;再到应用管理里允许自启动和后台运行。跑脚本时让 Auto.js 保持在前台,不要最小化到桌面,后台被杀的概率会小很多。

5.2 现象:换了手机后点击位置完全不对

换手机后在别人屏幕上一顿乱点,点评论、点搜索框,就是点不到按钮。原因基本只有一个:脚本里写死了像素坐标。1080×2400 上的 (540, 2200) 在 1440×3200 上对应位置完全不同,缩放不是简单乘除。

解决路径:优先把脚本改成控件查找,比如text("关注").click();必须用坐标时改成比例写法,用device.widthdevice.height乘以系数。如果脚本包已经适配了你的分辨率但还点错,打开开发者选项里的“显示布局边界”,对比控件实际位置和脚本坐标。

5.3 现象:悬浮窗权限开了,悬浮球就是不出现在屏幕上

设置里明明允许了悬浮窗,Auto.js 的悬浮球还是看不到。这种问题在小米、vivo 上特别常见,它们对悬浮窗有一层额外的“后台弹出界面”拦截,单开悬浮窗权限不够。

解决路径:进应用管理 → Auto.js → 权限管理,把“后台弹出界面”“显示悬浮窗”“自启动”三项全部允许;再到省电策略里设为无限制。个别机型全开了仍不显示悬浮球,就别跟它较劲,用“定时任务”方式启动脚本,或者直接点主页的运行按钮,不需要悬浮球。

5.4 现象:text(“关注”) 一直找不到,脚本卡在死循环

脚本一直在刷日志,报“没有找到关注按钮”,然后继续滑动、继续查,看起来像死循环。这通常是 App 更新后控件结构变了,或者页面是用 Flutter、WebView 绘制的,控件树里根本没有文字节点。

解决路径:先sleep(1000)等页面渲染完成再查找;再换desc()匹配,很多按钮文字不在text里而在content-desc里;最后考虑找图匹配,截一张按钮模板图放进img/目录。如果 App 是自动更新的,回退到脚本说明里标注的版本,很多问题会当场消失。

5.5 现象:跑得太猛,账号出现验证码

脚本连续跑几十次后,账号突然要求滑块验证,甚至提醒登录环境异常。这是高频相同操作触发了平台风控。脚本自动化操作本身就是平台规则中需要谨慎处理的边界,账号风险要自己掂量清楚。

解决路径:脚本只在备用机、小号上做功能验证,别拿真实主力账号跑批量操作。把单次数量和频率都调低,间隔拉到 5 秒以上,随机等待放在两次循环之间。脚本是学习工具,用来理解操作自动化可以,别把它当成绕过平台规则的免死金牌。

6. 最后一个技巧:用日志和截图确认脚本真的在跑

6.1 日志输出:先确认循环进来了

很多脚本运行没反应,不是脚本坏了,而是它压根没进入你预期的那段逻辑。在关键位置补上日志,比盯着屏幕猜可靠得多。

log("循环开始,当前次数: " + count); if (followBtn == null) { log("注意:未找到关注按钮,当前包名: " + currentPackage()); }

log()输出的内容会实时出现在 Auto.js 日志面板,运行窗口不关就能看到。加日志的位置选在循环入口、条件分支和异常分支里,运行一遍,对照日志顺序就能定位到是哪一步跳走了。

6.2 截图与前台应用:把黑匣子打开

日志告诉你脚本走到了哪,截图告诉你脚本看到的是什么。配合使用,基本能把“点了没反应”这类问题定成“没找到控件”或是“坐标点偏了”。

requestScreenCapture(false); // 申请截屏权限,false 表示不保存原图 var img = captureScreen(); images.save(img, "/sdcard/脚本截图/debug.png"); log("截图已保存,请打开文件管理器查看");

第一次调用requestScreenCapture时会弹系统授权,必须先同意。截图保存后再打开文件管理器看现场,App 当前停在哪个页面、按钮在不在、有没有弹窗遮挡,一目了然。配合currentPackage()判断当前前台应用,就能确认脚本是不是被别的 App 打断。

这套流程我每次都会走一遍:装完先跑最小 toast 脚本,确认无障碍服务在线;再用日志看循环有没有进来;最后截图看界面状态,才轮得到调速度。拆这份脚本合集时,前十次翻车几乎全卡在权限回收和坐标写死这两件事上。从那以后,我拿到任何新脚本都强制先跑日志版,不直接上完整循环,省下的时间远比写几行log()多。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 1:13:25

SDL 1.2.14嵌入式fbdev图形开发实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 1:13:02

CAN总线工业网关的故障识别与自愈机制设计详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 1:11:21

ASP.NET+SQL Server构建内部项目管理系统:从Gridview到部署避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 1:10:47

Linux PCI驱动框架详解:从设备匹配到中断处理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 1:09:55

烧录良率上不去?从物理层到系统层的逐级排查框架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华