Autojs 实践-抖音极速版福袋助手

前言

好久没更新博客了,最近做了个抖音极速版福袋脚本,想看看能不能自动抢到,于是在仿照其他脚本UI做了一个,哈哈。利用上班时间让它自己跑,测试大概2-3天,一个福袋没抢到(也不知道是不是被检测到了),唉,确实蛮心累了,可能也需要一些经验吧,后面会持续优化吧!!创作不易,希望可以给个赞谢谢!!

概述

抖音极速版脚本分:体验版普通版云控版
毕竟创作不易,我会给出体验版本源码,放心。

实现逻辑

在这里插入图片描述

脚本UI实现效果

云空版本还在开发中!!!
在这里插入图片描述

测试工具

手机小米11
开发工具AutoXJS
极速版版本28.1.0

主要方法

1、判断目前在APP页面位置

function F611484() {sleep(5000, 6000);let OO00OO000OO00OO00 = "android.widget.FrameLayout";let OO0O0OO0O0OO0O0OO = "android.widget.TextView"if (OOO00OOO000OOO00OO = classNameContains("Button").textContains("我知道了").findOne(2000)) {OOO00OOO000OOO00OO.click();}if (className(OO00OO000OO00OO00).findOnce()) {// 在首页if (className(OO0O0OO0O0OO0O0OO).text("首页").findOne(1000)) {toastLog("在首页")click("首页")sleep(3000, 6000);if (G898459.R124174) {H169894()} else if (G898459.U829206) {B046710()}} else {try {sleep(4000, 6000);let OOO0O00OOO0OOO00O = className("android.widget.TextView").id("user_name").findOnce();if (OOO0O00OOO0OOO00O) {let OOO0OOO0O0OOOOO0O = OOO0O00OOO0OOO00O.getText();console.log("已在直播间:", OOO0OOO0O0OOOOO0O);Y795214()} else {let OOO0O00OOO0OOO00O = className("android.widget.TextView").id("user_name").findOnce();if (OOO0O00OOO0OOO00O) {let OOO0OOO0O0OOOOO0O = OOO0O00OOO0OOO00O.getText();console.log("已在直播间:", OOO0OOO0O0OOOOO0O);Y795214()}}} catch (error) {console.log("数据异常:", error);Y795214()}}}
}

2、选择推荐直播间

function H169894() {if (OOO00OOO000OOO00OO = className("android.widget.Button").descContains("侧边栏").findOne(2000)) {OOO00OOO000OOO00OO.click();sleep(4000, 6000);if (O431321(className("android.widget.TextView").textContains("直播广场").findOnce())) {Y795214()} else {console.log("没找到");}}
}

3、选择关注直播间

function B046710() {click("关注")sleep(2000, 4000);if (O431321(classNameContains("Button").descMatches(/(.*直播中.*)/).findOnce())) {sleep(5000, 6000);// 限时任务if (beginBtn = classNameContains("FlattenUIText").textContains("限时任务").findOne(2000)) {back()sleep(2000, 4000);back()}Y795214()} else if (O431321(classNameContains("TextView").descMatches(/(.*高领.*)/).findOnce())) {sleep(5000, 6000);// 限时任务if (beginBtn = classNameContains("FlattenUIText").textContains("限时任务").findOne(2000)) {back()sleep(2000, 4000);back()}Y795214()} else {console.log("未找到直播间");}
}

完整代码实现

"ui";
importClass(android.view.View);
importClass(android.content.Intent);
importClass(android.net.Uri);
importClass(android.provider.Settings);
var V474794 = '淞沪'
var U177888 = '1.0.1'
var U275459 = '#4EBFDD'
var scriptTitle = V474794 + ' v' + U177888var S287859 = {M858326: null,F645210: false,H645600: null,V597406: 0,D252837: random(2, 4),J193048: random(0.5, 0.55),G877429: random(0.1, 0.15),F130107: 60000
}var G898459 = {R124174: false,U829206: false,D560422: 3,
}var I429086 = {P995066: null,Z682637: null,}var ooooOOOOOO000000OOOO0O0O0O0O = ScriptUI.toString()
var ooOOOOOOOOOOOOOoooooooooo00000oooOO = ooooOOOOOO000000OOOO0O0O0O0O.slice(ooooOOOOOO000000OOOO0O0O0O0O.indexOf('{'), ooooOOOOOO000000OOOO0O0O0O0O.lastIndexOf('}')).slice(1, -2).replace(/项目标题/g, scriptTitle).replace(/#4EBFDD/g, U275459)
configIDArr = ooOOOOOOOOOOOOOoooooooooo00000oooOO.match(/ id( )?=( )?["|'].*?["|']/g).map(item => item.replace(/ id( )?=( )?["|']|"|'/g, ''))
ui.statusBarColor(U275459);
ui.layout(ooOOOOOOOOOOOOOoooooooooo00000oooOO);function ScriptUI() {<vertical><appbar><toolbar bg="#4EBFDD" layout_height="60" margin="-2" id="toolbar" title="项目标题" /><tabs id="tabs" /></appbar><viewpager id="viewpager"><frame><scroll><vertical gravity="center"><card w="*" h="auto" margin="10 5" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical"><vertical padding="18 8" h="auto"><linear><Switch margin="12 0" layout_weight="1" id="autoService" text="无障碍服务" textSize="15sp" checked="false" />{/* <Switch margin="12 0" layout_weight="1" id="floatingWindowPermission" text="悬浮窗权限" textSize="15sp" checked="false" /> */}</linear></vertical><View bg="#4EBFDD" h="*" w="5" /></card><text id="login" text="wx: sout-lanys" layout_gravity="center" textColor="red" w="auto" textStyle="bold" /><horizontal padding="18 8" h="auto"><card w="auto" h="auto" margin="5 5" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical"><button id="stopScript" h="auto" style="Widget.AppCompat.Button.Colored" text="关 闭" textStyle="bold" color="#ffffff" bg="#4EBFDD" foreground="?selectableItemBackground" layout_gravity="bottom" /></card><card w="*" h="auto" margin="5 5" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical"><button id="startScript" h="auto" text="开 始 运 行" textStyle="bold" color="#ffffff" bg="#4EBFDD" foreground="?selectableItemBackground" layout_gravity="bottom" /></card></horizontal><radiogroup></radiogroup><vertical padding="18 8" h="auto"><vertical><text text="福袋入口:" padding="8 8 8 8" textSize="17" h="auto" /><radiogroup orientation="horizontal" padding="5 5 5 5"><radio id="luckyBagRecommended" text="推荐入口" textSize="17" paddingRight="5" /><radio id="luckyBagFollow" text="关注入口" textSize="17" checked="true" paddingRight="5" /></radiogroup></vertical><horizontal><text text="福袋时间:" padding="8 8 8 8" textSize="17" h="auto" /><input id="luckyBagTime" color="#666666" paddingLeft="2" w="150" value="5" /><text text="(单位分)" padding="8 8 8 8" textSize="17" h="*" /></horizontal></vertical></vertical></scroll></frame></viewpager></vertical>
}
ui.viewpager.setTitles(["基础模块"]);
ui.tabs.setupWithViewPager(ui.viewpager);ui.emitter.on("resume", function () {ui.autoService.checked = auto.service != null;// ui.floatingWindowPermission.checked = floaty.checkPermission() != false
});ui.autoService.on("check", function (checked) {if (checked && auto.service == null) {app.startActivity({action: "android.settings.ACCESSIBILITY_SETTINGS"});}if (!checked && auto.service != null) {auto.service.disableSelf();}
});ui.stopScript.on("click", () => {if (I429086.Z682637 == null) {} else {I429086.Z682637.interrupt();I429086.Z682637 = null;}exit()
});ui.startScript.on("click", function () {uiStart()
})function uiStart() {let OOOOOOOOO0O0OOOOO = ui.luckyBagRecommended.isChecked();if (OOOOOOOOO0O0OOOOO) {G898459.R124174 = OOOOOOOOO0O0OOOOO}let OOOOOOO0O0OOO0OOO = ui.luckyBagFollow.isChecked();if (OOOOOOO0O0OOO0OOO) {G898459.U829206 = OOOOOOO0O0OOO0OOO}let OO0O0OO0O0OO0O0OO = ui.luckyBagTime.getText();if (!P250312(OO0O0OO0O0OO0O0OO)) {G898459.D560422 = OO0O0OO0O0OO0O0OO}I429086.Z682637 = threads.start(function () {E746632()});
}function E746632() {app.launchApp("抖音极速版");toastLog("当前启动:" + "抖音极速版");F611484()
}function F611484() {sleep(5000, 6000);let OO00OO000OO00OO00 = "android.widget.FrameLayout";let OO0O0OO0O0OO0O0OO = "android.widget.TextView"if (OOO00OOO000OOO00OO = classNameContains("Button").textContains("我知道了").findOne(2000)) {OOO00OOO000OOO00OO.click();}if (className(OO00OO000OO00OO00).findOnce()) {// 在首页if (className(OO0O0OO0O0OO0O0OO).text("首页").findOne(1000)) {toastLog("在首页")click("首页")sleep(3000, 6000);if (G898459.R124174) {H169894()} else if (G898459.U829206) {B046710()}} else {try {sleep(4000, 6000);let OOO0O00OOO0OOO00O = className("android.widget.TextView").id("user_name").findOnce();if (OOO0O00OOO0OOO00O) {let OOO0OOO0O0OOOOO0O = OOO0O00OOO0OOO00O.getText();console.log("已在直播间:", OOO0OOO0O0OOOOO0O);Y795214()} else {let OOO0O00OOO0OOO00O = className("android.widget.TextView").id("user_name").findOnce();if (OOO0O00OOO0OOO00O) {let OOO0OOO0O0OOOOO0O = OOO0O00OOO0OOO00O.getText();console.log("已在直播间:", OOO0OOO0O0OOOOO0O);Y795214()}}} catch (error) {console.log("数据异常:", error);Y795214()}}}
}function H169894() {if (OOO00OOO000OOO00OO = className("android.widget.Button").descContains("侧边栏").findOne(2000)) {OOO00OOO000OOO00OO.click();sleep(4000, 6000);if (O431321(className("android.widget.TextView").textContains("直播广场").findOnce())) {Y795214()} else {console.log("没找到");}}
}function B046710() {click("关注")sleep(2000, 4000);if (O431321(classNameContains("Button").descMatches(/(.*直播中.*)/).findOnce())) {sleep(5000, 6000);// 限时任务if (beginBtn = classNameContains("FlattenUIText").textContains("限时任务").findOne(2000)) {back()sleep(2000, 4000);back()}Y795214()} else if (O431321(classNameContains("TextView").descMatches(/(.*高领.*)/).findOnce())) {sleep(5000, 6000);// 限时任务if (beginBtn = classNameContains("FlattenUIText").textContains("限时任务").findOne(2000)) {back()sleep(2000, 4000);back()}Y795214()} else {console.log("未找到直播间");}
}function Y795214() {while (true) {sleep(10000, 12000);const OOO00OOO000OOO00OO = className("android.widget.Button").descMatches(/(.*电商.*)/).findOne(1000);if (OOO00OOO000OOO00OO) {sleep(5000, 6000);}let OOOOO0OOOOO0OOOOO0O = A609971();if (OOOOO0OOOOO0OOOOO0O) {X839265(OOOOO0OOOOO0OOOOO0O)}}
}
function A609971() {const OOOOOOO0O0OOO0OOO = className("com.lynx.tasm.behavior.ui.LynxFlattenUI").descMatches(/(.*福袋.*)/).findOne(1000);if (OOOOOOO0O0OOO0OOO) {let OO00OO000OO00OO00 = OOOOOOO0O0OOO0OOO.desc();if (!P250312(OO00OO000OO00OO00) && !V559387(OO00OO000OO00OO00)) {back()} else {// 判断是否包含数字if (!P250312(OO00OO000OO00OO00) && V559387(OO00OO000OO00OO00)) {var OO0O0OO0O0OO0O0OO = OO00OO000OO00OO00.split(" ")var OOOOO0OOOOO0OOOOO0O = OO0O0OO0O0OO0O0OO[1].split("分")var OOOOO0OO0O0OOO0OOO0 = OOOOO0OOOOO0OOOOO0O[1].split("秒")let OOOOOO00OOO0OOOOO0O = D935738((parseInt(OOOOO0OOOOO0OOOOO0O[0] * 60000)), parseInt(OOOOO0OO0O0OOO0OOO0[0] * 1000));if (OOOOOO00OOO0OOOOO0O) {console.log("等待时间秒:", OOOOOO00OOO0OOOOO0O, "秒");console.log("规定等待时间秒:", G898459.D560422 * S287859.F130107, "秒");if (OOOOOO00OOO0OOOOO0O <= G898459.D560422 * S287859.F130107) {return OOOOOO00OOO0OOOOO0O + 1000;} else {console.log("不符合福袋要求");Z618586()}}} else {back()}}} else {console.log("没有福袋");Z618586()}}function V559387(str) {return /[0-9]/.test(str);
}function D935738(OO0O0OO0O0OO0O0OO, OO0O0OO0O0OO0O0OO0) {return OO0O0OO0O0OO0O0OO + OO0O0OO0O0OO0O0OO0;
}function X839265(OO0O0OO0O0OO0O0OO) {if (OO0O0OO0O0OO0O0OO) {if (!classNameContains("FlattenUIImage").findOne(1000)) {if (text("参与成功 等待开奖").findOnce()) {back()} else {back()}} else {const OOO0O00OOO0OOO00O = className("com.lynx.tasm.behavior.ui.LynxFlattenUI").descMatches(/(.*福袋.*)/).findOne(1000);if (O431321(OOO0O00OOO0OOO00O)) {if (O431321(text("一键发表评论").findOnce())) {console.log("参与普通福袋");console.log("参与福袋,福袋时间为:", Math.round((OO00OO000OO00OO00 / S287859.F130107)), "分钟")toast("参与福袋,福袋时间为:", Math.round((OO00OO000OO00OO00 / S287859.F130107)), "分钟")sleep(OO00OO000OO00OO00);O431321(text("我知道了").findOnce())return true;}}}}
}function Z618586() {console.log(device.width / S287859.D252837 + "," + device.height * S287859.J193048);console.log(device.width / S287859.D252837 + "," + device.height * S287859.G877429);swipe(device.width / S287859.D252837, device.height * S287859.J193048, device.width / S287859.D252837, device.height * S287859.G877429, random(200, 400))}function P250312(OO00OO000OO00OO00) {if (OO00OO000OO00OO00 !== null && OO00OO000OO00OO00 !== undefined && OO00OO000OO00OO00 !== '' && OO00OO000OO00OO00 != "") {return false;} else {return true;}
}function O431321(OO0O0OO0O0OO0O0OO) {if (OO0O0OO0O0OO0O0OO) {click(OO0O0OO0O0OO0O0OO.bounds().centerX(), OO0O0OO0O0OO0O0OO.bounds().centerY())sleep(2000, 4000);return true;}return false;}

总结

后面会继续完善、比如日志框、浮窗、直播间参与人数过滤、抢普通福袋等等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/293076.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Visual Studio 各版本都出现新建项目后解决方案下没有文件和项目问题

一步一步创建C#控制台应用程序也会出错&#xff0c;这个你可能不会相信&#xff0c;我就遇到了这么一次&#xff0c;就在刚刚&#xff0c;是的&#xff0c;我都不敢相信&#xff0c;用了这么多年的新建一个控制台程序居然不正常了。新建完毕发现里面什么都没有&#xff0c;除了…

C# .Net学习笔记—— 加密和解密算法

一、四种加密方式 1、MD5不可逆加密 2、Des对称可逆加密 3、RSA非对称可逆加密 4、数字证书SSL 二、详解 1、MD5加密 public class MD5Encrypt{public static string Encrypt(string source, int length 32){if (string.IsNullOrEmpty(source)) return string.Empty;HashA…

初级数据结构(七)——二叉树

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;六&#xff09;——堆 | NULL 下一篇-> 1、写在前面 二叉树的基本概念在《初级数据结构&#xff08;五&#xff09;——树和二叉树的概念》中已经介绍得足够详细了。上一…

STM32CubeMX配置HAL库输入捕获

STM32CubeMX配置HAL库输入捕获 STM32的输入捕获功能可以用来测量脉冲宽度或者频率。其工作原理是&#xff0c;通过检测TIMx_CHx上的边沿信号&#xff0c;在边沿信号发生跳变&#xff08;比如 上升沿/下降沿&#xff09;的时候&#xff0c;将当前定时器的值&#xff08;TIMx_C…

Vue开发实践:解决Chrome浏览器禁止通过代码关闭窗口的问题

前言 在开发 Electron 桌面端应用时&#xff0c;软件有一个退出软件的按钮&#xff0c;用于关闭应用程序。然而&#xff0c;在实现这一功能的过程中&#xff0c;我们可能会遇到一些问题。本文将探讨这个问题&#xff0c;并给出解决方案。 实现 询问负责 Electron 的同学…

智能变电站协议系列-1、GOOSE、SV、MMS协议简介及GOOSE示例运行问题(IEC61850)

文章目录 一、前言二、资料准备三、智能变电站自动化系统架构四、GOOSE、MMS、SV协议以及其他协议1、GOOSE&#xff08;通用面向对象变电站事件&#xff09;协议2、MMS&#xff08;制造消息规范&#xff09;协议3、采样值 (SV) 协议4、数字化变电站中使用的其他协议遗留协议 五…

智能算力进阶C位,揭秘人工智能产业背后的“冰山一角”

作者 | 曾响铃 文 | 响铃说 前几年&#xff0c;在IDC领域&#xff0c;市场谈及最多的还是数据中心&#xff0c;随着人工智能产业的成熟&#xff0c;特别是今年以来大模型的爆发&#xff0c;智算中心逐步替代了数据中心进入大众视野&#xff0c;成为市场热议的关键词&#xff…

java-多线程

程序&#xff0c;进程&#xff0c;线程 【1】程序&#xff0c;进程&#xff0c;线程 ➢程序(program)&#xff1a;是为完成特定任务、用某种语言编写的一组指令的集合,是一段静态的代码。 &#xff08;程序是静态的&#xff09; ➢进程(process)&#xff1a;是程序的一次执行…

VGGNet

目录 一、VGGNet介绍 1、VGG块 2、VGG架构 3、LeNet, AlexNet和VGGNet对比 4、总结 二、代码实现 1、定义VGG卷积块 2、VGG网络 3、训练模型 4、总结 一、VGGNet介绍 VGGNet&#xff08;Visual Geometry Group Network&#xff09;是一种深度卷积神经网络&#xff0c;…

RocketMQ系统性学习-RocketMQ高级特性之消息大量堆积处理、部署架构和高可用机制

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 【11来了】文章导读地址&#xff1a;点击查看文章导读&#xff01; &#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f3…

恶意软件样本行为分析——Process Monitor和Wireshark

1.1 实验名称 恶意软件样本行为分析 1.2 实验目的 1) 熟悉 Process Monitor 的使用 2) 熟悉抓包工具 Wireshark 的使用 3) VMware 的熟悉和使用 4) 灰鸽子木马的行为分析 1.3 实验步骤及内容 第一阶段&#xff1a;熟悉 Process Monitor 的使用 利用 Process …

职场利器-软考高级、PMP、CKA/CKS/CKAD备考

1、【软考高级】信息系统项目管理师 全国计算机技术与软件专业技术资格(水平)考试网上报名平台http://bm.ruankao.org.cn/sign/welcome 模拟作答系统230747 第一次裸考 考试成绩查询 三科均未通过 软考考试多少分通过? ​​​​​​​ 软考高级&#xff0c;它的考试科目是《…