|
|
±´Èû¶ûÇúÏß»¬¶¯µÄʵ¼ÊÑÝʾ
- // =====================================================================
- // Àý×Ó1£º±´Èû¶ûÇúÏß»¬¶¯µÄʵ¼ÊÑÝʾ£¨Õæ»ú¿ÉÖ±½ÓÔËÐУ©
- // ×÷Ó㺰Ñ"»úÆ÷ζ"ºÜÖØµÄÖ±ÉÏֱϻ¬¶¯£¬¸Ä³ÉÕæÈËÊָеÄÇúÏß»¬¶¯£¬
- // ²¢¼ÓÈëËæ»úÑÓ³Ù¡¢Ëæ»úÆ«ÒÆ¡¢Ëæ»ú»Ø»¬¡¢Ëæ»úÍ£ÁôµÈ·À¼ì²âϸ½Ú¡£
- //
- // ¡ï ÇúÏß vs µ¥´ÎÖ±»¬£¬Óôí¾Í·²»¶¯Ò³£º
- // ¡¤ ÁбíÒ³£¨ÉèÖÃ/ͼÎÄ/С˵/ÉÌÆ·ÁÐ±í£©¡ú ÓÃÇúÏߣ¬Ð§¹ûºÃ£¬ÏñÈËÂýÂý¹ö
- // ¡¤ ¶ÌÊÓÆµÐÅÏ¢Á÷£¨¿ìÊÖ/¶¶Òô£© ¡ú ±ØÐëÓá¾Ò»´ÎÍêÕûµÄ¿ìËÙ³¤»¬¡¿£¬
- // ÇúÏ߻ᱻ²ð³ÉÊ®¼¸¸öСÊÖÊÆ£¬»ÃæÖ»¶¶²»·Ò³£¨ÒÑʵ²â²È¿Ó£©
- // ±¾ÎļþÁ½Ì×¶¼ÊµÏÖÁË£¬¸Ä CFG.feedType ¼´¿ÉÇл»£ºlist / video
- // ÒýÇæ£ºES5 / Rhino£¨²»ÒªÓà let const ¼ýÍ·º¯Êý Ä£°å×Ö·û´®£©
- // =====================================================================
- // ---------------- ÔËÐÐͳ¼Æ£¨½áÊøÊ±»ã×Ü´òÓ¡£©----------------
- var STAT = { ok: 0, retry: 0, back: 0, stay: 0, popup: 0, startMs: 0 };
- // ---------------- Ò»¡¢ÅäÖÃÇø£¨¸ÄÕâÀï¾ÍÐУ©----------------
- var CFG = {
- // ¾ÍÓÿìÊÖ£¬²»ÕÛÌÚ
- targetPkg: "com.smile.gifmaker",
- loopCount: 8, // ÑÝʾ»¬¶¯¶àÉÙÂÖ
- swipeMinMs: 420, // ÁбíÒ³µ¥´Î»¬¶¯×î¿ìºÄʱ
- swipeMaxMs: 900, // ÁбíÒ³µ¥´Î»¬¶¯×îÂýºÄʱ
- stayMinMs: 1200, // ÿÆÁÍ£Áô×î¶Ì
- stayMaxMs: 3500, // ÿÆÁÍ£Áô×
- // feedType£ºlist =ÁбíÒ³(ÉèÖÃ/ͼÎÄ)£¬Óñ´Èû¶ûÇúÏß»¬¶¯£»
- // video=¶ÌÊÓÆµÐÅÏ¢Á÷(¿ìÊÖ/¶¶Òô)£¬ÓÃÒ»´ÎÍêÕûµÄ¿ìËÙ³¤»¬·Ò³¡£
- feedType: "video",
- videoSwipeMinMs: 220, // ¶ÌÊÓÆµµ¥´Î·Ò³×î¿ì(ms)£ºÌ«¿ì²»·£¬Ì«ÂýÏñÍÏ×§
- videoSwipeMaxMs: 380, // ¶ÌÊÓÆµµ¥´Î·Ò³×îÂý(ms)
- verifySwipe: true, // ·Ò³ºóУÑé»ÃæÊÇ·ñ±ä»¯£¬Ã»±ä¾Í²¹Ò»´ÎÇ¿»¬
- curveEnable: true, // ÁбíģʽϵÄÇúÏß»¬¶¯¿ª¹Ø
- curveSteps: 14, // ÇúÏß²ð³É¶àÉÙС¶Î£¨Ô½¶àÔ½Ô²»¬£¬Ô½Âý£©
- offsetPx: 18, // µã»÷ʱµÄËæ»ú¶¶¶¯°ë¾¶£¨ÏñËØ£©
- backSwipeRate: 25, // °Ù·ÖÖ®¶àÉٵĸÅÂÊ"Íù»Ø»¬Ò»ÏÂ"£¨ÕæÈ˳£Óе͝×÷£©
- microPauseRate: 35, // °Ù·ÖÖ®¶àÉٵĸÅÂÊÖÐ;"ÊÖָͣһÏÂ"
- clearPopupEnable: true, // Ë¢µÄ¹ý³ÌÖÐ˳´ø¹Øµ¯´°£¨ÇàÉÙÄêģʽ/Éý¼¶/ȨÏÞ£©
- tapBackEnable: false, // ÊÓÆµÁ÷²»°´·µ»Ø£¨»áÍ˳ö¿ìÊÖ£©
- randomTapEnable: false, // ÊÓÆµÁ÷²»Âҵ㣨»áÎó´¥µãÔÞ/ÆÀÂÛ/½øÖ÷Ò³£©
- finishGoHome: false, // ÅÜÍêÍ£ÔÚ¿ìÊÖ£¬²»»Ø×ÀÃæ
- logToFile: true, // ÊÇ·ñ°Ñ¶¯×÷дÈÕÖ¾Îļþ
- logPath: "/sdcard/AIWROK/¼¼ÇÉ1_ÇúÏß»¬¶¯ÈÕÖ¾.txt"
- };
- // ---------------- ¶þ¡¢»ù´¡¹¤¾ß ----------------
- var LOG = [];
- function log(s) {
- var line = "[" + nowStr() + "] " + s;
- try { printl(line); } catch (e) {}
- LOG.push(line);
- if (CFG.logToFile && LOG.length >= 10) flushLog();
- }
- function flushLog() {
- try {
- var txtAll = LOG.join("\n") + "\n";
- LOG = [];
- file.createFloder(parentOf(CFG.logPath));
- txt.writeTxt(CFG.logPath, txtAll, true); // µÚÈý¸ö²ÎÊý true = ×·¼Ó
- } catch (e) {}
- }
- function parentOf(p) {
- var i = p.lastIndexOf("/");
- return i > 0 ? p.substring(0, i) : p;
- }
- function nowStr() {
- try { return time.now(); } catch (e) {}
- var d = new Date();
- return d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
- }
- function rand(min, max) {
- return Math.floor(min + Math.random() * (max - min + 1));
- }
- function rSleep(min, max) {
- sleep.millisecond(rand(min, max));
- }
- // ÆÁÄ»¿í¸ß£¨´ø¶µµ×£¬Ä³Ð©»úÐÍÈ¡²»µ½¾Íµ± 1080x2400£©
- function sw() {
- try { return screen.getScreenWidth(); } catch (e) {}
- try { return device.getScreenWidth(); } catch (e) {}
- return 1080;
- }
- function sh() {
- try { return screen.getScreenHeight(); } catch (e) {}
- try { return device.getScreenHeight(); } catch (e) {}
- return 2400;
- }
- // °²È«Ö´ÐУºÈκÎÒ»²½Õ¨Á˶¼²»Ó°ÏìÖ÷Á÷³Ì£¨Õæ»ú±Ø±¸£©
- function safe(fn, tag) {
- try { return fn(); } catch (e) {
- log("!! " + (tag || "δ֪²½Öè") + " Òì³£: " + (e.message || e));
- return null;
- }
- }
- // ---------------- Èý¡¢¼¼ÇÉ1£º±´Èû¶ûÇúÏß»¬¶¯ ----------------
- // Ö±ÉÏÖ±Ï嵀 swipe ÊÇ×îÈÝÒ×±»Ê¶±ðµÄÌØÕ÷£¬Óöþ´Î±´Èû¶ûÈù켣´ø»¡¶È
- function bezierSwipe(x1, y1, x2, y2, durMs, steps) {
- steps = steps || CFG.curveSteps;
- // ¿ØÖƵ㣺ȡÖеã + Ëæ»úºáÏòÆ«ÒÆ£¬ÈÃÿһµ¶µÄ»¡¶È¶¼²»Ò»Ñù
- var cx = (x1 + x2) / 2 + rand(-60, 60);
- var cy = (y1 + y2) / 2;
- var prevX = x1, prevY = y1;
- var segMs = Math.max(16, Math.round(durMs / steps));
- for (var i = 1; i <= steps; i++) {
- var t = i / steps;
- var mt = 1 - t;
- // ¶þ´Î±´Èû¶û¹«Ê½
- var bx = mt * mt * x1 + 2 * mt * t * cx + t * t * x2;
- var by = mt * mt * y1 + 2 * mt * t * cy + t * t * y2;
- // ÿһС¶Î¶¼¼ÓÒ»µãÊÖ¶¶
- bx += rand(-2, 2);
- by += rand(-2, 2);
- try {
- auto.swip(prevX, prevY, bx, by, segMs, 0);
- } catch (e) {
- try { auto.swipe(prevX, prevY, bx, by, segMs); } catch (e2) {}
- }
- prevX = bx; prevY = by;
- // ¼¼ÇÉ£ºÖÐÍ¾Ëæ»ú"ÊÖÖ¸¶ÙÒ»ÏÂ"£¬¸üÏñÕæÈËÔÚ¿´ÄÚÈÝ
- if (CFG.microPauseRate > 0 && rand(1, 100) <= CFG.microPauseRate && i < steps - 1) {
- sleep.millisecond(rand(40, 160));
- }
- }
- }
- function lineSwipe(x1, y1, x2, y2, durMs) {
- try { auto.swip(x1, y1, x2, y2, durMs, 0); }
- catch (e) { try { auto.swipe(x1, y1, x2, y2, durMs); } catch (e2) {} }
- }
- // £¡£¡£¡¹Ø¼ü£º¶ÌÊÓÆµ·Ò³±ØÐëÓá¾Ò»´ÎÍêÕûµÄ¿ìËÙ³¤»¬¡¿£¡£¡£¡
- // ²ð³ÉÊ®¼¸¶ÎС»¬¶¯£¨ÇúÏߣ©£¬¿ìÊÖ»á°Ñÿ¶Îµ±³É¶ÀÁ¢µÄ΢СÊÖÊÆ ¡ú »Ãæ¶¶¶¯µ«²»·Ò³
- function onceSwipe(x1, y1, x2, y2, durMs) {
- try { auto.swip(x1, y1, x2, y2, durMs, 0); }
- catch (e) { try { auto.swipe(x1, y1, x2, y2, durMs); } catch (e2) {} }
- }
- // ÏòÉÏ·Ò»ÆÁ£¨ÐÅÏ¢Á÷×î³£Óã©
- function swipeUpFeed() {
- var w = sw(), h = sh();
- var x1 = rand(Math.round(w * 0.35), Math.round(w * 0.65));
- if (CFG.feedType === "video") {
- // ¶ÌÊÓÆµÄ£Ê½£ºÆðµã¿¿Ï¡¢Öյ㿿ÉÏ¡¢¾àÀ볤¡¢Ëٶȿ죬һ´Î¸ã¶¨
- var vy1 = Math.round(h * (0.78 + Math.random() * 0.07)); // 0.78~0.85
- var vy2 = Math.round(h * (0.12 + Math.random() * 0.08)); // 0.12~0.20
- var vdur = rand(CFG.videoSwipeMinMs, CFG.videoSwipeMaxMs); // 220~380ms
- onceSwipe(x1, vy1, x1 + rand(-12, 12), vy2, vdur);
- log("·Ò³ÉÏ»¬(µ¥´Î) Æðµãy=" + vy1 + " ÖÕµãy=" + vy2 + " ¾àÀë" + (vy1 - vy2) + "px x=" + x1 + " ºÄʱ" + vdur + "ms");
- return true;
- }
- // Áбíģʽ£ºÇúÏß»¬¶¯£¨ÉèÖÃÒ³/ͼÎÄÁбíÕâÀà²ÅÓõÃÉÏ£©
- var y1 = rand(Math.round(h * 0.72), Math.round(h * 0.85));
- var x2 = x1 + rand(-70, 70);
- var y2 = rand(Math.round(h * 0.18), Math.round(h * 0.35));
- var dur = rand(CFG.swipeMinMs, CFG.swipeMaxMs);
- if (CFG.curveEnable) bezierSwipe(x1, y1, x2, y2, dur, CFG.curveSteps);
- else lineSwipe(x1, y1, x2, y2, dur);
- log("ÉÏ»¬(Áбí) (" + Math.round(x1) + "," + y1 + ")->(" + Math.round(x2) + "," + y2 + ") " + dur + "ms");
- return true;
- }
- // ÏòÏ»ػ¬£¨ÕæÈË¿´Íê»áÍù»Ø·£¬ÊÓÆµÁ÷Àï = ·»ØÉÏÒ»¸öÊÓÆµ£©
- function swipeDownFeed() {
- var w = sw(), h = sh();
- var x1 = rand(Math.round(w * 0.35), Math.round(w * 0.65));
- if (CFG.feedType === "video") {
- var vy1 = Math.round(h * (0.15 + Math.random() * 0.08));
- var vy2 = Math.round(h * (0.80 + Math.random() * 0.06));
- var vdur = rand(CFG.videoSwipeMinMs, CFG.videoSwipeMaxMs);
- onceSwipe(x1, vy1, x1 + rand(-12, 12), vy2, vdur);
- STAT.back++;
- log("»Ø»¬(µ¥´Î) ÉÏÒ»¸öÊÓÆµ (" + x1 + "," + vy1 + ")->(" + vy2 + ") " + vdur + "ms [Àۼƻػ¬" + STAT.back + "´Î]");
- return true;
- }
- var y1 = rand(Math.round(h * 0.22), Math.round(h * 0.35));
- var x2 = x1 + rand(-50, 50);
- var y2 = rand(Math.round(h * 0.70), Math.round(h * 0.82));
- var dur = rand(CFG.swipeMinMs, CFG.swipeMaxMs);
- if (CFG.curveEnable) bezierSwipe(x1, y1, x2, y2, dur, CFG.curveSteps);
- else lineSwipe(x1, y1, x2, y2, dur);
- log("»Ø»¬Ò»Ï£¨ÄâÈË£©");
- return true;
- }
- // ÂýÂý"¿´ÄÚÈÝ"µÄС·ù»¬¶¯£¨ÔĶÁÀàÈÎÎñÓã©
- function slowReadSwipe() {
- if (CFG.feedType === "video") {
- // ÊÓÆµÁ÷ûÓÐ"ÂýËÙÔĶÁ"£¬¸Ä³ÉÀÏÀÏʵʵ¿´Ò»»á¶ù£¨Í£Áô¾ÍÊÇ×îºÃµÄÄâÈË£©
- var s = rand(1500, 3500);
- STAT.stay++;
- log("Í£Áô¹Û¿´ " + s + "ms [ÀÛ¼ÆÍ£Áô" + STAT.stay + "´Î]");
- sleep.millisecond(s);
- return;
- }
- var w = sw(), h = sh();
- var x = rand(Math.round(w * 0.4), Math.round(w * 0.6));
- var y1 = Math.round(h * 0.78);
- var y2 = Math.round(h * 0.48);
- if (CFG.curveEnable) bezierSwipe(x, y1, x, y2, rand(1200, 2000), 20);
- else lineSwipe(x, y1, x, y2, 1500);
- log("ÂýËÙÔĶÁ»¬¶¯");
- }
- // ---------------- ·Ò³Ð£Ñ飺»¬ÁËû»»ÊÓÆµ£¬¾Í²¹Ò»´Î¸üÇ¿µÄ»¬ ----------------
- function shotFingerprint() {
- try {
- var b = screen.screenShotFull().toBase64();
- if (!b) return "";
- // ȡͷβ¸÷ 200 ×Ö·û×öÖ¸ÎÆ£¬¹»ÓÃÇÒ¿ì
- return b.substring(0, 200) + "|" + b.substring(b.length - 200) + "|" + b.length;
- } catch (e) { return ""; }
- }
- // ·µ»Ø true = È·ÈÏ·Ò³³É¹¦
- function swipeUpWithVerify() {
- var before = shotFingerprint();
- swipeUpFeed();
- sleep.millisecond(700); // µÈÊÓÆµÇл»¶¯»
- var after = shotFingerprint();
- if (before && after && before === after) {
- STAT.retry++;
- log("¡Á »ÃæÎޱ仯(û·Ò³)£¬²¹Ò»´ÎÇ¿»¬ 0.88h¡ú0.08h 250ms");
- var w = sw(), h = sh();
- onceSwipe(Math.round(w / 2), Math.round(h * 0.88), Math.round(w / 2), Math.round(h * 0.08), 250);
- sleep.millisecond(900);
- var after2 = shotFingerprint();
- if (after2 && after2 !== before) {
- STAT.ok++;
- log("¡Ì ²¹»¬³É¹¦£¬ÒÑÇе½ÐÂÊÓÆµ");
- return true;
- }
- log("¡Á ²¹»¬ºóÈÔδ±ä»¯£¬¿ÉÄܱ»µ¯´°/Ö±²¥Ò³µ²×¡");
- return false;
- }
- STAT.ok++;
- log("¡Ì ·Ò³³É¹¦£¬»ÃæÒѱ仯£¨±¾ÂÖµÚ " + STAT.ok + " ´ÎÓÐЧ·Ò³£©");
- return true;
- }
- // ---------------- ËÄ¡¢¼¼ÇÉ2£ºËæ»úÆ«ÒÆµã»÷ ----------------
- // ÓÀÔ¶µãͬһ¸öÏñËØ = Ò»ÑۼٵĻúÆ÷ÈË£¬µãµÄʱºò¸ø¸ö¶¶¶¯
- function tapRandom(cx, cy, offset) {
- offset = (offset === undefined) ? CFG.offsetPx : offset;
- var x = cx + rand(-offset, offset);
- var y = cy + rand(-offset, offset);
- if (x < 0) x = 0; if (y < 0) y = 0;
- if (x > sw()) x = sw(); if (y > sh()) y = sh();
- try { auto.clickPoint(x, y); }
- catch (e) { try { device.clickPoint(x, y); } catch (e2) {} }
- log("µã»÷ (" + x + "," + y + ") ¶¶¶¯¡À" + offset);
- return { x: x, y: y };
- }
- // ÔÚ¾ØÐÎÇøÓòÄÚËæ»úµã£¨°Ù·Ö±Èд·¨£¬²»Ìô·Ö±æÂÊ£©
- // areaPct = [x1%, y1%, x2%, y2%]£¬ÀýÈç [0.1,0.2,0.9,0.6]
- function tapAreaPct(areaPct) {
- var w = sw(), h = sh();
- var x1 = Math.round(areaPct[0] * w), y1 = Math.round(areaPct[1] * h);
- var x2 = Math.round(areaPct[2] * w), y2 = Math.round(areaPct[3] * h);
- // ¶¶¶¯ÉÏÏÞ 25px£ºÇøÓòÔ½´ó²»´ú±íÒª¶¶Ô½ºÝ£¬¶¶Ì«´ó»áÎó´¥µ½ÅԱߵİ´Å¥£¨µãÔÞ/ÆÀÂÛ/Í·Ïñ£©
- var off = Math.min(25, Math.max(8, (x2 - x1) / 4));
- return tapRandom(Math.round((x1 + x2) / 2), Math.round((y1 + y2) / 2), off);
- }
- // ---------------- Îå¡¢¼¼ÇÉ3£º³¤°´ + Çáµã ----------------
- function longTap(x, y, ms) {
- ms = ms || 800;
- try { auto.longClickPoint(x, y, ms); }
- catch (e) {
- // ûÓÐ longClick ½Ó¿Úʱ£¬ÓÃ"°´ÏÂ-Í£Áô-̧Æð"ÊÖÊÆ¶µµ×
- try {
- auto.swip(x, y, x + rand(-2, 2), y + rand(-2, 2), ms, 0);
- } catch (e2) {}
- }
- log("³¤°´ (" + x + "," + y + ") " + ms + "ms");
- }
- // ---------------- Áù¡¢Ç°Ì¨Åжϣ¨¶àͨµÀ£¬Êµ²âÓеÄÉ豸 getTopPackName ·µ»Ø¿Õ£©----------------
- function topPkg() {
- try { var t1 = app.getTopPackName(); if (t1) return t1; } catch (e) {}
- try { var t2 = app.getTopPackNameV2(); if (t2) return t2; } catch (e) {}
- try { var t3 = auto.getTopPackName(); if (t3) return t3; } catch (e) {}
- // ¶µµ×£º´Óµ±Ç° Activity Àï½Ø°üÃû£¨ÐÎÈç com.smile.gifmaker/xxx.Activity£©
- var act = "";
- try { act = "" + app.getCurrentActivity(); } catch (e) {
- try { act = "" + app.getAgentCurrenAcitvity(); } catch (e2) { act = ""; }
- }
- if (act && act.indexOf("/") > 0) return act.substring(0, act.indexOf("/"));
- return act || "";
- }
- function isInstalled(pkg) {
- // ·½Ê½1£¨×î¿É¿¿£©£ºÄܲ鵽°æ±¾ºÅ/Ó¦ÓÃÃû = ×°ÁË
- try { var v = app.getVerName(pkg); if (v) return true; } catch (e) {}
- try { var n = app.getAppName(pkg); if (n) return true; } catch (e) {}
- // ·½Ê½2£ºgetAllApp ·µ»Ø¸ñʽ²»¶¨£¨×Ö·û´®»ò¶ÔÏ󣩣¬Í³Ò»ÐòÁл¯ºóÆ¥Åä
- try {
- var list = app.getAllApp();
- for (var i = 0; i < list.length; i++) {
- var s = "";
- try {
- s = (typeof list[i] === "object") ? JSON.stringify(list[i]) : String(list[i]);
- } catch (e1) { s = ""; }
- if (s.indexOf(pkg) >= 0) return true;
- }
- } catch (e) {}
- return false; // ×¢Ò⣺¼ì²âAPI²»È«Ê±¿ÉÄÜÎ󱨣¬openTarget Àï²»×öÓ²»ØÍË
- }
- // Æô¶¯ºó/Ë¢µÄ¹ý³ÌÖеĵ¯´°¶µµ×£¨¿ìÊÖ³£¼û£ºÇàÉÙÄêģʽ¡¢Éý¼¶¡¢È¨ÏÞ£©
- // Ö»·Å"µãÁ˾ø¶Ô°²È«"µÄ´Ê£¬²»·Å"¹Ø±Õ/È·¶¨"·ÀÖ¹ÎóµãÒµÎñ°´Å¥
- var POPUP_WORDS = ["ÎÒÖªµÀÁË", "ÒÔºóÔÙ˵", "Ï´ÎÔÙ˵", "Ôݲ»¸üÐÂ", "Ôݲ»Éý¼¶",
- "Ìø¹ý", "ÉÔºóÔÙ˵", "¾Ü¾ø", "²»ÔÊÐí"];
- // È¡ÕûÒ³Îı¾£¨Ò»´Îµ÷ÓÃÄõ½È«²¿ÎÄ×Ö£¬±ÜÃâ¶Ô´Ê¿âÖð¸ö nodeSearch äɨˢ¾¯¸æ£©
- function pageText() {
- var t = "";
- try { t = String(auto.getXml() || ""); } catch (e) { t = ""; }
- if (!t || t.length < 20) {
- try { t = String(ocr.getAllString() || ""); } catch (e) { t = ""; }
- }
- return t;
- }
- function killPopupOnce() {
- if (!CFG.clearPopupEnable) return false;
- // ¹Ø¼ü£ºÏÈÈ·ÈÏÒ³ÃæÉÏÕæµÄÓе¯´°´Ê£¬ÔÙÈ¥²éÕҽڵ㡣
- // ·ñÔòÕÒ²»µ½ÔªËØÊ±ÒýÇæ»á´òÓ¡"getNode´íÎóÔªËØ0δÕÒµ½"¾¯¸æ£¬Ë¢ÂúÈÕÖ¾¡£
- var page = pageText();
- if (!page) return false; // È¡²»µ½Ò³ÃæÐÅÏ¢¾Í·ÅÆú±¾ÂÖɱµ¯´°£¬²»Ó²É¨
- for (var i = 0; i < POPUP_WORDS.length; i++) {
- if (page.indexOf(POPUP_WORDS[i]) < 0) continue; // Ò³ÃæÀïûÕâ¸ö´Ê£¬Ìø¹ý
- // ͨµÀ1£º½Úµã£¨ÏÈÑéÃ÷½ÚµãÕæÉíÔٵ㣩
- var n = null;
- try { n = auto.nodeSearch(300).text(POPUP_WORDS[i]).getNode(0); } catch (e) { n = null; }
- if (n) {
- var txtN = "";
- try { txtN = String(n.getText() || ""); } catch (e1) { txtN = ""; }
- if (txtN.indexOf(POPUP_WORDS[i]) >= 0) {
- var clicked = false;
- try { n.clickPoint(); clicked = true; } catch (e2) {
- try { n.click(); clicked = true; } catch (e3) {}
- }
- if (clicked) {
- log("¹Øµ¯´°(½Úµã): " + POPUP_WORDS[i]);
- sleep.millisecond(1000);
- return true;
- }
- }
- }
- // ͨµÀ2£ºOCR
- try {
- var p = ocr.findTapPoint(POPUP_WORDS[i]);
- if (p && typeof p.x !== "undefined" && p.x > 0) {
- auto.clickPoint(p.x + rand(-2, 2), p.y + rand(-2, 2));
- log("¹Øµ¯´°(OCR): " + POPUP_WORDS[i]);
- sleep.millisecond(1000);
- return true;
- }
- } catch (e) {}
- }
- return false;
- }
- // ---------------- Æß¡¢Æô¶¯Ä¿±êAPP ----------------
- function openTarget() {
- // ´òÓ¡¼ì²â½á¹û£¬·½±ãºË¶Ô£¨Ó¦ÓÃÃû/°æ±¾ÄÜÈ¡µ½¾ÍÊÇ×°ÁË£©
- var vName = "", aName = "";
- try { vName = app.getVerName(CFG.targetPkg); } catch (e) {}
- try { aName = app.getAppName(CFG.targetPkg); } catch (e) {}
- log("°²×°¼ì²â: " + CFG.targetPkg + " Ó¦ÓÃÃû=" + (aName || "È¡²»µ½") + " °æ±¾=" + (vName || "È¡²»µ½"));
- if (!isInstalled(CFG.targetPkg)) {
- // Ö»Ìáʾ£¬²»»ØÍË¡ª¡ª°²×°¼ì²âAPIÔÚ²¿·ÖÉ豸Éϲ»È«£¬Îó±¨ÂʸßÓÚ©±¨ÂÊ
- log("×¢Ò⣺°²×°¼ì²âδȷÈÏ£¨¿ÉÄÜÎ󱨣©£¬ÈÔÖ±½Ó³¢ÊÔÆô¶¯");
- }
- log("Æô¶¯ " + CFG.targetPkg);
- try { app.openApp(CFG.targetPkg); } catch (e) { try { app.startApp(CFG.targetPkg); } catch (e2) {} }
- rSleep(4500, 6000);
- var top = "";
- for (var i = 0; i < 12; i++) {
- killPopupOnce(); // ÊׯôµÄÇàÉÙÄêģʽ/ȨÏÞ/Éý¼¶µ¯´°
- top = topPkg();
- if (top === CFG.targetPkg) { log("ÒÑÔÚǰ̨: " + top); return true; }
- sleep.millisecond(800);
- }
- // ²¿·ÖÉ豸µÄǰ̨APIÒ»ÂÉ·µ»Ø¿Õ£¨·Ç½Å±¾ÎÊÌ⣩£¬´ËʱÔÙ²¹Ò»´ÎÆô¶¯¶µµ×£¬È»ºóÕÕ³£ÍùÏÂ×ß
- if (!top) {
- log("Ìáʾ£º±¾»úǰ̨APIÈ¡²»µ½°üÃû£¨ÊôÉ豸¼æÈÝÎÊÌ⣬²»Ó°Ï컬¶¯£©");
- try { app.openApp(CFG.targetPkg); } catch (e) { try { app.startApp(CFG.targetPkg); } catch (e2) {} }
- sleep.millisecond(3000);
- log("ÒѲ¹Æô¶¯Ò»´Î£¬¼ÌÐø»¬¶¯");
- } else {
- log("µ±Ç°Ç°Ì¨=" + top + "£¬Ä¿±ê=" + CFG.targetPkg + "£¨¼ÌÐø»¬¶¯£¬²»Ó°Ï죩");
- }
- return false;
- }
- // ---------------- Æß¡¢Ö÷Á÷³Ì ----------------
- function main() {
- log("===== Àý×Ó1 ±´Èû¶ûÇúÏß»¬¶¯ÑÝʾ ¿ªÊ¼£¨Ä£Ê½:" + CFG.feedType + "£©=====");
- STAT.startMs = new Date().getTime();
- var w = sw(), h = sh();
- log("·Ö±æÂÊ: " + w + " x " + h);
- // ¿ª³¡ÐÅÏ¢£ºÉ豸¡¢µçÁ¿¡¢Ä£Ê½¡¢±¾ÂÖ²ÎÊý
- try { log("É豸: " + device.getModel() + " / ϵͳ " + device.getVersion()); } catch (e) {}
- try { log("µçÁ¿: " + device.getBatteryLevel() + "% ³äµçÖÐ: " + device.isCharging()); } catch (e) {}
- log("ÔËÐвÎÊý: ÂÖÊý=" + CFG.loopCount + " ģʽ=" + CFG.feedType +
- " ·Ò³ºÄʱ=" + CFG.videoSwipeMinMs + "~" + CFG.videoSwipeMaxMs + "ms" +
- " Í£Áô=" + CFG.stayMinMs + "~" + CFG.stayMaxMs + "ms" +
- " »Ø»¬¸ÅÂÊ=" + CFG.backSwipeRate + "%");
- openTarget();
- for (var i = 1; i <= CFG.loopCount; i++) {
- var roundStart = new Date().getTime();
- log("---- µÚ " + i + " / " + CFG.loopCount + " ÂÖ£¨½ø¶È " +
- Math.round(i * 100 / CFG.loopCount) + "%£©----");
- // 0) ÿÂÖÏÈ˳ÊÖÇåһϵ¯´°£¨ÇàÉÙÄêģʽ/Éý¼¶ËæÊ±»á±Ä£©
- if (killPopupOnce()) {
- STAT.popup++;
- log("±¾ÂÖÇåÀíÁ˵¯´° [ÀۼƵ¯´°" + STAT.popup + "´Î]");
- }
- // 1) Ö÷Ðж¯£ºÉÏ»¬·Ò³£¨´øÐ£Ñ飬û·³É¹¦¾Í²¹Ò»´Î£©
- if (CFG.verifySwipe) swipeUpWithVerify();
- else swipeUpFeed();
- // 2) ÄâÈËÍ£Áô£ºËæ»ú¿´Ò»»á¶ù
- var st = rand(CFG.stayMinMs, CFG.stayMaxMs);
- log("Í£Áô " + st + "ms ¹Û¿´");
- sleep.millisecond(st);
- // 3) ¸ÅÂÊÐԻػ¬£ºÕæÈ˲»Êǵ¥ÏòÏÂÀµÄ
- if (rand(1, 100) <= CFG.backSwipeRate) {
- rSleep(400, 1200);
- swipeDownFeed();
- rSleep(600, 1500);
- }
- // 4) ¸ÅÂÊÐÔÂýËÙÔĶÁ£ºÅ¼¶ûÍ£ÏÂÀ´ÈÏÕæ¿´Ò»Ìõ
- if (rand(1, 100) <= 30) {
- slowReadSwipe();
- rSleep(1000, 2500);
- }
- // 5) ¸ÅÂÊÐÔËæ»úÇáµã¿Õ°×Çø£ºÄ£ÄâÎó´¥/¿´Í¼Æ¬£¨ÊÓÆµÁ÷ĬÈϹرգ©
- if (CFG.randomTapEnable && rand(1, 100) <= 20) {
- tapAreaPct([0.15, 0.25, 0.85, 0.55]);
- rSleep(800, 1800);
- if (CFG.tapBackEnable) {
- try { auto.pressBack(); } catch (e) { try { device.pressBack(); } catch (e2) {} }
- }
- rSleep(600, 1200);
- }
- log("±¾ÂÖºÄʱ " + (new Date().getTime() - roundStart) + "ms");
- // ÿÂֻ㱨һ´ÎµçÁ¿£¬³¤Ê±¼äÅÜÄÜ¿´³öµôµçËÙ¶È
- if (i % 3 === 0) {
- try { log("µ±Ç°µçÁ¿: " + device.getBatteryLevel() + "%"); } catch (e) {}
- }
- }
- // ÊÕβ£ºÄ¬ÈÏÍ£ÔÚԵأ¨Ë¢ÊÓÆµ¾ÍÊÇÈÃËüÒ»Ö±´ýÔÚAPPÀ
- if (CFG.finishGoHome) {
- safe(function () { auto.home(); }, "»Ø×ÀÃæ");
- log("ÒÑ»Ø×ÀÃæ");
- } else {
- log("ÊÕβ£ºÍ£ÔÚ " + CFG.targetPkg + " ²»Í˳ö");
- }
- // ½áÊø»ã×ܱ¨¸æ
- var totalMs = new Date().getTime() - STAT.startMs;
- log("================ ÔËÐлã×Ü ================");
- log("×ܺÄʱ: " + Math.round(totalMs / 1000) + " Ã루ƽ¾ùµ¥ÂÖ " +
- Math.round(totalMs / CFG.loopCount) + "ms£©");
- log("ÓÐЧ·Ò³: " + STAT.ok + " ´Î ²¹»¬: " + STAT.retry + " ´Î");
- log("»Ø»¬: " + STAT.back + " ´Î Í£Áô¹Û¿´: " + STAT.stay + " ´Î ÇåÀíµ¯´°: " + STAT.popup + " ´Î");
- if (CFG.loopCount > 0) {
- log("·Ò³³É¹¦ÂÊ: " + Math.round(STAT.ok * 100 / CFG.loopCount) + "%");
- }
- log("==========================================");
- flushLog();
- log("===== Àý×Ó1 ½áÊø£¬ÈÕÖ¾: " + CFG.logPath + " =====");
- try { toast.show("ÑÝʾÍê³É ·Ò³" + STAT.ok + "´Î"); } catch (e) {}
- }
- main();
¸´ÖÆ´úÂë
|
|