B2B网络软件
标题:
极速视频APP刷金币
[打印本页]
作者:
YYPOST群发软件
时间:
1 小时前
标题:
极速视频APP刷金币
极速视频APP刷金币
3.png
(3.11 MB, 下载次数: 0)
下载附件
1 小时前
上传
// =============================================================================
// 极速视频APP刷金币 - 极简稳定版(AIWROK / 无碍 + Agent双模式)
// 支持:抖音极速版(com.ss.android.ugc.aweme.lite)
// 快手极速版(com.kuaishou.nebula)
// 今日头条极速版(com.ss.android.article.lite)
// 原理:只做两个动作①每隔N秒下滑看下一个视频 ②定期点击宝箱/广告赚金币
// 不做复杂XML识别 → 绝无乱点问题
// =============================================================================
print.log("╔══════════════════════════════════════════╗");
print.log("║ 极速视频刷金币 - 极简稳定版 ║");
print.log("║ 只做:滑屏 + 点宝箱 不会乱点! ║");
print.log("╚══════════════════════════════════════════╝");
print.time();
// =============================================================================
// 第一部分:配置(按你手机分辨率/习惯改这里)
// =============================================================================
var CONFIG = {
// ===== 选择你要刷的APP:1=抖音极速版 2=快手极速版 3=今日头条极速版 =====
目标APP编号: 3,
// ===== 核心参数 =====
总运行分钟: 30, // 总共跑多久(分钟,到点自动退出)
每个视频秒数: 18, // 每个视频停留秒数(15-20秒比较稳,不会被检测秒划)
滑动起点: [0.5, 0.78], // 滑动起点百分比(屏幕中下方往上滑)
滑动终点: [0.5, 0.32], // 滑动终点百分比
滑动时长毫秒: 620, // 滑动时长(模拟人手,不要太快)
宝箱点击分钟间隔: 2, // 每几分钟去点一次宝箱Tab(头条=底部"任务"Tab)
悬浮红包点击视频间隔: 3, // 每刷几个视频点一次悬浮红包(头条=左侧带黄圈的红包)
操作间隔毫秒: 900, // 两次点击之间冷却
// ===== 三个APP的包名 + 宝箱位置百分比(通用1080P+分辨率都适用)=====
APP表: [
{
编号: 1, 名称: "抖音极速版",
包名: "com.ss.android.ugc.aweme.lite",
首页Tab坐标: [0.1, 0.96], // 底部"首页"位置
宝箱坐标: [0.925, 0.81],// 右下"看视频/赚金币宝箱"悬浮位置
额外开红包坐标: [0.93, 0.93], // 右下"计时红包"
搜索框坐标: null // 抖音不需要搜索入口
},
{
编号: 2, 名称: "快手极速版",
包名: "com.kuaishou.nebula",
首页Tab坐标: [0.1, 0.97],
宝箱坐标: [0.95, 0.42], // 右边竖条"挂件/红包"
额外开红包坐标: [0.06, 0.42], // 左边红包圈
搜索框坐标: [0.88, 0.09]
},
{
编号: 3, 名称: "今日头条极速版",
包名: "com.ss.android.article.lite",
// ★头条极速版底部5Tab:首页(0.1)/视频(0.3)/开宝箱(0.55)/商城(0.7)/我的(0.9)
// 必须进"视频"Tab才是视频流,"首页"Tab是文章列表不能刷视频!
首页Tab坐标: [0.3, 0.9656], // ★"视频"Tab(XML实测)
宝箱坐标: [0.5, 0.9656], // ★底部"开宝箱"Tab整块中心(XML实测 bounds中心)
额外开红包坐标: [0.08, 0.62], // ★左侧红包悬浮窗(截图里带黄色进度圈)
搜索框坐标: [0.52, 0.078]
}
],
// ===== 模式 =====
优先使用Agent模式: true,
调试模式: true
};
// =============================================================================
// 第二部分:极简操作引擎(Agent模式 / 无碍模式 自动切换)
// =============================================================================
var Engine = {
mode: "",
屏幕宽: 0,
屏幕高: 0,
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;
},
_xy: function(px, py) { return [Math.floor(this.屏幕宽*px), Math.floor(this.屏幕高*py)]; },
click: function(px, py) {
// 用 auto.clickPercent(百分比坐标点击,和 swipPercent_v2 配套)
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.操作间隔毫秒);
return true;
},
// 通过XML找Tab并点击(已禁用,用坐标替代)
clickTabByName: function(名称) {
return false;
},
swipe: function() {
// 关键:从左侧滑,避开中心的"全屏播放"按钮
// 全屏按钮 centerPercent="[0.5,0.6438]",范围 x=[0.3861,0.6139]
// 所以滑动 x 取 0.35(左侧,避开全屏按钮区域)
// y: 0.85 → 0.10(覆盖75%屏高,确保翻页)
// duration=300ms(快速滑,不被识别成点击)
// stay=0ms(不做停留,避免被识别为tap)
try {
auto.swipPercent_v2(0.35, 0.85, 0.35, 0.10, 300, 0);
} catch(e) {
print.log(" ⚠ swipPercent_v2 异常: " + e.message);
}
sleep.millisecond(毫秒 = 500);
},
back: function() {
try { if (this.mode==="agent") agent.shell("input keyevent 4"); else auto.back(); } catch(e) {}
sleep.millisecond(毫秒=700);
},
home: function() {
try { if (this.mode==="agent") agent.shell("input keyevent 3"); else auto.home(); } catch(e) {}
sleep.second(秒=1);
},
openApp: function(pkg) {
try {
// 用 app.resetApp 启动(AIWROK原生API,最稳定)
app.resetApp(pkg);
print.log("✓ 启动APP:" + pkg);
sleep.second(秒 = 8);
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(秒 = 8);
return true;
} catch(e2) { print.log("⚠ 启动完全失败:"+e2.message); return false; }
}
},
// 弹窗处理:禁用(在视频页盲点会点到点赞/分享/评论按钮,造成乱点)
关闭小弹窗: function() {
return 0;
},
// 无dump版找字:直接返回false(禁用,防止卡死)
findAndClickText: function(关键词) {
return false;
},
_cat: function(f) { try { var r = ""+agent.shell("cat "+f); var i=r.indexOf("successMsg:"); if (i!==-1){var a=r.substring(i+11);var j=a.indexOf(",errorMsg:"); if (j!==-1)a=a.substring(0,j); return a.trim();} return r;} catch(e){return "";} }
};
// =============================================================================
// 第三部分:主流程(极简,两个动作循环)
// =============================================================================
function main() {
if (!Engine.init()) return;
var APP = CONFIG.APP表[CONFIG.目标APP编号 - 1];
if (!APP) { print.log("✗ 目标APP编号不对,只能是 1/2/3"); return; }
print.log("\n▶▶▶ 目标:" + APP.名称 + "(包名 " + APP.包名 + ")");
print.log("▶▶▶ 总时长:" + CONFIG.总运行分钟 + " 分钟 / 每个视频停留 " + CONFIG.每个视频秒数 + " 秒");
// ========== 1. 启动APP ==========
print.log("[步骤1] 启动APP...");
Engine.openApp(APP.包名);
sleep.second(秒 = 10);
Engine.关闭小弹窗();
// ========== 2. 切换到视频Tab(直接坐标,无dump)==========
print.log("[步骤2] 切换到视频Tab...");
// 直接用坐标点视频Tab (0.3, 0.9656)
auto.clickPercent(0.3, 0.9656);
sleep.second(秒 = 3);
Engine.关闭小弹窗();
// 强制再切一次(确保切成功)
auto.clickPercent(0.3, 0.9656);
sleep.second(秒 = 2);
Engine.关闭小弹窗();
print.log("✓ 已进入视频Tab");
// ========== 3. 主循环 ==========
var 开始时间戳 = Date.now();
var 最大毫秒 = CONFIG.总运行分钟 * 60 * 1000;
// 第一次 30 秒就点宝箱(立刻就动起来)
var 上次点宝箱 = 开始时间戳 - (CONFIG.宝箱点击分钟间隔 * 60 * 1000 - 30 * 1000);
var 上次点悬浮红包 = 开始时间戳;
var 视频数 = 0;
var 宝箱次数 = 0;
var 红包次数 = 0;
print.log("\n╔══════════ 开始刷视频 ══════════╗");
print.log(" · 宝箱间隔 " + CONFIG.宝箱点击分钟间隔 + " 分钟,第1次30秒触发");
if (APP.额外开红包坐标) {
print.log(" · 每 " + CONFIG.悬浮红包点击视频间隔 + " 个视频点一次悬浮红包");
}
while ((Date.now() - 开始时间戳) < 最大毫秒) {
var 已过分钟 = ((Date.now() - 开始时间戳) / 60000).toFixed(1);
var 剩余分钟 = (CONFIG.总运行分钟 - 已过分钟).toFixed(1);
// ---- A. 每隔宝箱分钟间隔 → 去点宝箱 ----
var 距上次宝箱Ms = Date.now() - 上次点宝箱;
if (距上次宝箱Ms >= CONFIG.宝箱点击分钟间隔 * 60 * 1000) {
宝箱次数++;
print.log("\n[" + 已过分钟 + "m] 🔑 第" + 宝箱次数 + "次开宝箱");
try {
// 第1步:点底部"开宝箱/任务"Tab
print.log(" [宝箱] 1. 点底部Tab (0.5,0.9656)");
auto.clickPercent(0.5, 0.9656);
sleep.second(秒 = 3);
// 第2步:点"看视频赚钱"卡片(XML centerPercent=[0.1569,0.2992])
print.log(" [宝箱] 2. 点'看视频赚钱' (0.157,0.299)");
auto.clickPercent(0.157, 0.299);
sleep.second(秒 = 5);
// 第3步:进入看视频赚钱子页,点中央大按钮
print.log(" [宝箱] 3. 点看视频按钮 (0.5,0.6)");
auto.clickPercent(0.5, 0.6);
sleep.second(秒 = 3);
// 第4步:等广告25秒
print.log(" 等待25秒(广告播放中)...");
for (var ad=0; ad<5; ad++) {
sleep.second(秒 = 5);
Engine.关闭小弹窗();
}
// 第5步:返回视频流
print.log(" [返回] back×2 + 回视频Tab");
agent.shell("input keyevent 4");
sleep.second(秒 = 2);
agent.shell("input keyevent 4");
sleep.second(秒 = 2);
auto.clickPercent(0.3, 0.9656);
sleep.second(秒 = 2);
Engine.关闭小弹窗();
} catch(e) {
print.log(" [宝箱] 异常: " + e.message);
try { agent.shell("input keyevent 4"); sleep.second(秒=2); } catch(e2) {}
try { auto.clickPercent(0.3, 0.9656); } catch(e3) {}
}
上次点宝箱 = Date.now();
}
// ---- A2. 每N个视频点一次悬浮红包 ----
if (APP.额外开红包坐标 && 视频数 > 0 && (视频数 % CONFIG.悬浮红包点击视频间隔) === 0) {
红包次数++;
print.log("\n 💰 悬浮红包 第" + 红包次数 + "次");
try {
auto.clickPercent(APP.额外开红包坐标[0], APP.额外开红包坐标[1]);
sleep.second(秒 = 3);
// 点领取按钮(屏幕中心偏下)
auto.clickPercent(0.5, 0.55);
sleep.second(秒 = 3);
// 等20秒
print.log(" 等待20秒...");
for (var hw=0; hw<4; hw++) { sleep.second(秒=5); Engine.关闭小弹窗(); }
agent.shell("input keyevent 4");
sleep.second(秒 = 2);
} catch(e) {
print.log(" [悬浮红包] 异常: " + e.message);
try { agent.shell("input keyevent 4"); } catch(e2) {}
}
}
// ---- B. 倒计时看当前视频 + 每20秒清一次弹窗 ----
var 剩 = CONFIG.每个视频秒数;
while (剩 > 0) {
sleep.second(秒 = 5);
剩 -= 5;
if (剩 === 10 || 剩 === 5) {
var n = Engine.关闭小弹窗();
if (n > 0) print.log(" [观看中] 清掉 " + n + " 个弹窗");
}
}
// ---- C. 滑到下一个 ----
视频数++;
if ((视频数 % 5) === 1 || CONFIG.调试模式) {
print.log(" ▶ 第 " + 视频数 + " 个视频(已过 " + 已过分钟 + "m,剩 " + 剩余分钟 + "m,宝箱 " + 宝箱次数 + " 次)");
}
var 滑OK = Engine.swipe();
sleep.millisecond(毫秒=1500);
// 每20个视频回视频Tab兜底
if ((视频数 % 20) === 0) {
auto.clickPercent(0.3, 0.9656);
sleep.second(秒=1);
}
// 每10个视频关掉一次弹窗
if ((视频数 % 10) === 0) {
Engine.关闭小弹窗();
}
}
print.log("\n╔══════════ 刷视频结束 ══════════╗");
print.log("║ 共刷视频:" + 视频数 + " 个");
print.log("║ 点宝箱次数:" + 宝箱次数 + " 次");
print.log("║ 运行时长:" + CONFIG.总运行分钟 + " 分钟");
print.log("╚══════════════════════════════════╝");
Engine.home();
print.timeEnd();
print.log("\n✓ 脚本完成!明天再来~");
}
main();
复制代码
欢迎光临 B2B网络软件 (http://bbs.niubt.cn/)
Powered by Discuz! X3.2