 | |  |  | 快手极速版自动刷视频
- // =============================================================================
- // 快手极速版自动刷视频(AIWROK 格式)
- // 3. 增加 Engine 双模式(Agent / 无碍)自动切换
- // 4. 增加防检测:随机时长 + 左侧滑动避开全屏按钮 + 统一弹窗处理
- // 5. 严格 ES5 语法(var / function,无 let/const/arrow)
- // =============================================================================
- print.log("╔══════════════════════════════════════════╗");
- print.log("║ 快手极速版自动刷视频 ║");
- print.log("║ 随机时长 + 左侧滑动 + 弹窗自动关闭 ║");
- print.log("╚══════════════════════════════════════════╝");
- print.time();
- // =============================================================================
- // 第一部分:配置(按需修改)
- // =============================================================================
- var CONFIG = {
- // ===== 核心参数 =====
- 总刷视频次数: 100, // 总共刷多少个视频(0=无限循环)
- 最小停留秒: 8, // 每个视频最少停留秒数
- 最大停留秒: 18, // 每个视频最多停留秒数
- 滑动时长毫秒: 400, // 滑动时长(模拟人手)
- 滑动起点X比: 0.35, // 滑动起点 X 百分比(左侧,避开中心全屏按钮)
- 滑动起点Y比: 0.78, // 滑动起点 Y 百分比
- 滑动终点Y比: 0.22, // 滑动终点 Y 百分比
- // ===== 启动参数 =====
- 启动后等待秒: 6, // App 启动后等待秒数
- 操作间隔毫秒: 800, // 点击之间冷却
- // ===== App 信息 =====
- App名称: "快手极速版",
- App包名: "com.kuaishou.nebula",
- // ===== 模式 =====
- 优先使用Agent模式: true,
- 调试模式: true
- };
- // =============================================================================
- // 第二部分:引擎(Agent / 无碍 双模式)
- // =============================================================================
- var Engine = {
- mode: "",
- 屏幕宽: 1080,
- 屏幕高: 2400,
- init: function() {
- print.log("\n【引擎初始化】检测模式...");
- if (CONFIG.优先使用Agent模式) {
- try { if (agent.isOpen()) { this.mode = "agent"; print.log("✓ Agent代理模式"); } } catch(e) {}
- }
- if (this.mode === "") {
- try { if (typeof auto !== 'undefined') { this.mode = "auto"; print.log("✓ 无碍(Accessibility)模式"); } } catch(e) {}
- }
- if (this.mode === "") {
- print.log("✗ 两个模式都不可用!请开启 Agent 或无障碍后再跑");
- return false;
- }
- // 获取屏幕尺寸
- try {
- if (this.mode === "agent") {
- var raw = "" + agent.shell("wm size");
- var m = raw.match(/(\d+)x(\d+)/);
- this.屏幕宽 = m ? parseInt(m[1]) : 1080;
- this.屏幕高 = m ? parseInt(m[2]) : 2400;
- } else {
- this.屏幕宽 = screen.getScreenWidth();
- this.屏幕高 = screen.getScreenHeight();
- }
- } catch(e) {
- this.屏幕宽 = 1080;
- this.屏幕高 = 2400;
- }
- print.log("✓ 屏幕尺寸:" + this.屏幕宽 + " × " + this.屏幕高);
- return true;
- },
- // 随机整数 [min, max)
- randNum: function(minnum, maxnum) {
- return Math.floor(minnum + Math.random() * (maxnum - minnum));
- },
- // 视频翻页滑动(左侧滑动,避开中心全屏按钮)
- nextVideo: function() {
- try {
- auto.swipPercent_v2(
- CONFIG.滑动起点X比, CONFIG.滑动起点Y比,
- CONFIG.滑动起点X比, CONFIG.滑动终点Y比,
- CONFIG.滑动时长毫秒, 0
- );
- } catch(e) {
- // 兜底:用 agent.shell input swipe
- try {
- var x = Math.floor(this.屏幕宽 * CONFIG.滑动起点X比);
- var y1 = Math.floor(this.屏幕高 * CONFIG.滑动起点Y比);
- var y2 = Math.floor(this.屏幕高 * CONFIG.滑动终点Y比);
- agent.shell("input swipe " + x + " " + y1 + " " + x + " " + y2 + " " + CONFIG.滑动时长毫秒);
- } catch(e2) {
- print.log(" ⚠ 滑动失败: " + e2.message);
- }
- }
- sleep.millisecond(500);
- },
- // 点击百分比坐标
- clickPercent: function(px, py) {
- try {
- auto.clickPercent(px, py);
- } catch(e) {
- try {
- agent.shell("input tap " + Math.floor(this.屏幕宽 * px) + " " + Math.floor(this.屏幕高 * py));
- } catch(e2) {}
- }
- sleep.millisecond(CONFIG.操作间隔毫秒);
- },
- // 返回键
- back: function() {
- try {
- if (this.mode === "agent") agent.shell("input keyevent 4");
- else auto.back();
- } catch(e) {}
- sleep.second(1);
- },
- // Home键
- home: function() {
- try {
- if (this.mode === "agent") agent.shell("input keyevent 3");
- else auto.home();
- } catch(e) {}
- sleep.second(2);
- },
- // 启动 App(按包名)—— 用 app.resetApp(昨天验证可行的 AIWROK 原生 API)
- openApp: function(pkg, 名称) {
- print.log(" → 启动:" + 名称 + "(" + pkg + ")");
- try {
- app.resetApp(pkg);
- print.log("✓ 启动APP:" + pkg);
- sleep.second(CONFIG.启动后等待秒);
- return true;
- } catch(e) {
- print.log(" ⚠ app.resetApp 失败:" + e.message + ",尝试 monkey 兜底");
- try {
- agent.shell("monkey -p " + pkg + " -c android.intent.category.LAUNCHER 1");
- sleep.second(CONFIG.启动后等待秒);
- return true;
- } catch(e2) {
- print.log(" ✗ 启动完全失败:" + e2.message);
- return false;
- }
- }
- },
- // 统一弹窗处理(关键词数组,借鉴 AutoX.js 风格)
- 关闭弹窗: function() {
- var 弹窗词 = [
- "我知道了", "知道了", "暂不开启", "以后再说", "取消",
- "暂不更新", "下次再说", "拒绝", "不允许", "跳过", "关闭",
- "暂不领取", "稍后再说", "不再提示"
- ];
- try {
- var 命中 = auto.findText(弹窗词.join("||"));
- if (!命中) return false;
- var 节点集合 = auto.nodeSearch(1500);
- if (!节点集合) return false;
- for (var i = 0; i < 弹窗词.length; i++) {
- var 词 = 弹窗词[i];
- var 过滤 = 节点集合.text(词);
- if (过滤 && 过滤.count() > 0) {
- var 节点 = 过滤.getNode(0);
- if (节点) {
- 节点.click();
- print.log(" ✓ 关弹窗:点击【" + 词 + "】");
- sleep.second(1);
- return true;
- }
- }
- }
- } catch(e) {
- if (CONFIG.调试模式) print.log(" - 弹窗检测异常: " + e.message);
- }
- return false;
- }
- };
- // =============================================================================
- // 第三部分:快手极速版模块
- // =============================================================================
- var kuaishou = {
- 名称: CONFIG.App名称,
- 包名: CONFIG.App包名,
- run: function(runTimes) {
- print.log("\n━━━━━ 快手极速版 开刷 ━━━━━");
- print.log(" · 目标次数:" + (runTimes === 0 ? "无限循环" : runTimes));
- print.log(" · 停留秒数:" + CONFIG.最小停留秒 + " - " + CONFIG.最大停留秒);
- // 1. 启动 App
- if (!Engine.openApp(this.包名, this.名称)) {
- print.log(" ✗ 启动失败,退出");
- return;
- }
- // 2. 启动后关弹窗
- Engine.关闭弹窗();
- // 3. 主循环
- var flagTime = 0;
- var 开始时间戳 = Date.now();
- while (runTimes === 0 || flagTime < runTimes) {
- flagTime++;
- var sleepSec = Engine.randNum(CONFIG.最小停留秒, CONFIG.最大停留秒);
- var 已过秒 = ((Date.now() - 开始时间戳) / 1000).toFixed(0);
- print.log(" [快手 " + flagTime + (runTimes === 0 ? "" : "/" + runTimes) + "] 停留 " + sleepSec + "s | 累计 " + 已过秒 + "s");
- sleep.second(sleepSec);
- Engine.关闭弹窗();
- Engine.nextVideo();
- }
- // 4. 退出回桌面
- print.log("\n ✓ 快手极速版任务完成,共刷 " + flagTime + " 个视频");
- Engine.home();
- }
- };
- // =============================================================================
- // 第四部分:启动入口
- // =============================================================================
- function main() {
- if (!Engine.init()) {
- print.log("✗ 引擎初始化失败,退出");
- return;
- }
- print.log("\n╔══════════ 开始刷快手 ══════════╗");
- print.log(" · App:" + CONFIG.App名称);
- print.log(" · 包名:" + CONFIG.App包名);
- print.log(" · 总次数:" + (CONFIG.总刷视频次数 === 0 ? "无限循环" : CONFIG.总刷视频次数));
- // 先回桌面
- Engine.home();
- sleep.second(2);
- // 跑快手
- try {
- kuaishou.run(CONFIG.总刷视频次数);
- } catch(e) {
- print.log("⚠ 快手异常: " + e.message);
- }
- print.log("\n╔══════════ 全部完成 ══════════╗");
- Engine.home();
- }
- // 启动
- main();
复制代码
| |  | |  |
|