B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 6|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

±´Èû¶ûÇúÏß»¬¶¯µÄʵ¼ÊÑÝʾ

[¸´ÖÆÁ´½Ó]

1173

Ö÷Ìâ

1178

Ìû×Ó

7969

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7969
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
±´Èû¶ûÇúÏß»¬¶¯µÄʵ¼ÊÑÝʾ


±´Èû¶ûÇúÏß»¬¶¯µÄʵ¼ÊÑÝʾ B2BÍøÂçÈí¼þ

±´Èû¶ûÇúÏß»¬¶¯µÄʵ¼ÊÑÝʾ B2BÍøÂçÈí¼þ

±´Èû¶ûÇúÏß»¬¶¯µÄʵ¼ÊÑÝʾ B2BÍøÂçÈí¼þ

  1. // =====================================================================
  2. //  Àý×Ó1£º±´Èû¶ûÇúÏß»¬¶¯µÄʵ¼ÊÑÝʾ£¨Õæ»ú¿ÉÖ±½ÓÔËÐУ©
  3. //  ×÷Ó㺰Ñ"»úÆ÷ζ"ºÜÖØµÄÖ±ÉÏֱϻ¬¶¯£¬¸Ä³ÉÕæÈËÊָеÄÇúÏß»¬¶¯£¬
  4. //        ²¢¼ÓÈëËæ»úÑÓ³Ù¡¢Ëæ»úÆ«ÒÆ¡¢Ëæ»ú»Ø»¬¡¢Ëæ»úÍ£ÁôµÈ·À¼ì²âϸ½Ú¡£
  5. //
  6. //  ¡ï ÇúÏß vs µ¥´ÎÖ±»¬£¬Óôí¾Í·­²»¶¯Ò³£º
  7. //    ¡¤ ÁбíÒ³£¨ÉèÖÃ/ͼÎÄ/С˵/ÉÌÆ·ÁÐ±í£©¡ú ÓÃÇúÏߣ¬Ð§¹ûºÃ£¬ÏñÈËÂýÂý¹ö
  8. //    ¡¤ ¶ÌÊÓÆµÐÅÏ¢Á÷£¨¿ìÊÖ/¶¶Òô£©        ¡ú ±ØÐëÓá¾Ò»´ÎÍêÕûµÄ¿ìËÙ³¤»¬¡¿£¬
  9. //      ÇúÏ߻ᱻ²ð³ÉÊ®¼¸¸öСÊÖÊÆ£¬»­ÃæÖ»¶¶²»·­Ò³£¨ÒÑʵ²â²È¿Ó£©
  10. //    ±¾ÎļþÁ½Ì×¶¼ÊµÏÖÁË£¬¸Ä CFG.feedType ¼´¿ÉÇл»£ºlist / video
  11. //  ÒýÇæ£ºES5 / Rhino£¨²»ÒªÓà let const ¼ýÍ·º¯Êý Ä£°å×Ö·û´®£©
  12. // =====================================================================

  13. // ---------------- ÔËÐÐͳ¼Æ£¨½áÊøÊ±»ã×Ü´òÓ¡£©----------------
  14. var STAT = { ok: 0, retry: 0, back: 0, stay: 0, popup: 0, startMs: 0 };

  15. // ---------------- Ò»¡¢ÅäÖÃÇø£¨¸ÄÕâÀï¾ÍÐУ©----------------
  16. var CFG = {
  17.     // ¾ÍÓÿìÊÖ£¬²»ÕÛÌÚ
  18.     targetPkg: "com.smile.gifmaker",
  19.     loopCount: 8,          // ÑÝʾ»¬¶¯¶àÉÙÂÖ
  20.     swipeMinMs: 420,       // ÁбíÒ³µ¥´Î»¬¶¯×î¿ìºÄʱ
  21.     swipeMaxMs: 900,       // ÁбíÒ³µ¥´Î»¬¶¯×îÂýºÄʱ
  22.     stayMinMs: 1200,       // ÿÆÁÍ£Áô×î¶Ì
  23.     stayMaxMs: 3500,       // ÿÆÁÍ£Áô×
  24.     // feedType£ºlist =ÁбíÒ³(ÉèÖÃ/ͼÎÄ)£¬Óñ´Èû¶ûÇúÏß»¬¶¯£»
  25.     //           video=¶ÌÊÓÆµÐÅÏ¢Á÷(¿ìÊÖ/¶¶Òô)£¬ÓÃÒ»´ÎÍêÕûµÄ¿ìËÙ³¤»¬·­Ò³¡£
  26.     feedType: "video",
  27.     videoSwipeMinMs: 220,  // ¶ÌÊÓÆµµ¥´Î·­Ò³×î¿ì(ms)£ºÌ«¿ì²»·­£¬Ì«ÂýÏñÍÏ×§
  28.     videoSwipeMaxMs: 380,  // ¶ÌÊÓÆµµ¥´Î·­Ò³×îÂý(ms)
  29.     verifySwipe: true,     // ·­Ò³ºóУÑé»­ÃæÊÇ·ñ±ä»¯£¬Ã»±ä¾Í²¹Ò»´ÎÇ¿»¬
  30.     curveEnable: true,     // ÁбíģʽϵÄÇúÏß»¬¶¯¿ª¹Ø
  31.     curveSteps: 14,        // ÇúÏß²ð³É¶àÉÙС¶Î£¨Ô½¶àÔ½Ô²»¬£¬Ô½Âý£©
  32.     offsetPx: 18,          // µã»÷ʱµÄËæ»ú¶¶¶¯°ë¾¶£¨ÏñËØ£©
  33.     backSwipeRate: 25,     // °Ù·ÖÖ®¶àÉٵĸÅÂÊ"Íù»Ø»¬Ò»ÏÂ"£¨ÕæÈ˳£Óе͝×÷£©
  34.     microPauseRate: 35,    // °Ù·ÖÖ®¶àÉٵĸÅÂÊÖÐ;"ÊÖָͣһÏÂ"
  35.     clearPopupEnable: true, // Ë¢µÄ¹ý³ÌÖÐ˳´ø¹Øµ¯´°£¨ÇàÉÙÄêģʽ/Éý¼¶/ȨÏÞ£©
  36.     tapBackEnable: false,   // ÊÓÆµÁ÷²»°´·µ»Ø£¨»áÍ˳ö¿ìÊÖ£©
  37.     randomTapEnable: false, // ÊÓÆµÁ÷²»Âҵ㣨»áÎó´¥µãÔÞ/ÆÀÂÛ/½øÖ÷Ò³£©
  38.     finishGoHome: false,    // ÅÜÍêÍ£ÔÚ¿ìÊÖ£¬²»»Ø×ÀÃæ
  39.     logToFile: true,       // ÊÇ·ñ°Ñ¶¯×÷дÈÕÖ¾Îļþ
  40.     logPath: "/sdcard/AIWROK/¼¼ÇÉ1_ÇúÏß»¬¶¯ÈÕÖ¾.txt"
  41. };

  42. // ---------------- ¶þ¡¢»ù´¡¹¤¾ß ----------------
  43. var LOG = [];

  44. function log(s) {
  45.     var line = "[" + nowStr() + "] " + s;
  46.     try { printl(line); } catch (e) {}
  47.     LOG.push(line);
  48.     if (CFG.logToFile && LOG.length >= 10) flushLog();
  49. }

  50. function flushLog() {
  51.     try {
  52.         var txtAll = LOG.join("\n") + "\n";
  53.         LOG = [];
  54.         file.createFloder(parentOf(CFG.logPath));
  55.         txt.writeTxt(CFG.logPath, txtAll, true); // µÚÈý¸ö²ÎÊý true = ×·¼Ó
  56.     } catch (e) {}
  57. }

  58. function parentOf(p) {
  59.     var i = p.lastIndexOf("/");
  60.     return i > 0 ? p.substring(0, i) : p;
  61. }

  62. function nowStr() {
  63.     try { return time.now(); } catch (e) {}
  64.     var d = new Date();
  65.     return d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
  66. }

  67. function rand(min, max) {
  68.     return Math.floor(min + Math.random() * (max - min + 1));
  69. }

  70. function rSleep(min, max) {
  71.     sleep.millisecond(rand(min, max));
  72. }

  73. // ÆÁÄ»¿í¸ß£¨´ø¶µµ×£¬Ä³Ð©»úÐÍÈ¡²»µ½¾Íµ± 1080x2400£©
  74. function sw() {
  75.     try { return screen.getScreenWidth(); } catch (e) {}
  76.     try { return device.getScreenWidth(); } catch (e) {}
  77.     return 1080;
  78. }
  79. function sh() {
  80.     try { return screen.getScreenHeight(); } catch (e) {}
  81.     try { return device.getScreenHeight(); } catch (e) {}
  82.     return 2400;
  83. }

  84. // °²È«Ö´ÐУºÈκÎÒ»²½Õ¨Á˶¼²»Ó°ÏìÖ÷Á÷³Ì£¨Õæ»ú±Ø±¸£©
  85. function safe(fn, tag) {
  86.     try { return fn(); } catch (e) {
  87.         log("!! " + (tag || "δ֪²½Öè") + " Òì³£: " + (e.message || e));
  88.         return null;
  89.     }
  90. }

  91. // ---------------- Èý¡¢¼¼ÇÉ1£º±´Èû¶ûÇúÏß»¬¶¯ ----------------
  92. // Ö±ÉÏÖ±Ï嵀 swipe ÊÇ×îÈÝÒ×±»Ê¶±ðµÄÌØÕ÷£¬Óöþ´Î±´Èû¶ûÈù켣´ø»¡¶È
  93. function bezierSwipe(x1, y1, x2, y2, durMs, steps) {
  94.     steps = steps || CFG.curveSteps;
  95.     // ¿ØÖƵ㣺ȡÖеã + Ëæ»úºáÏòÆ«ÒÆ£¬ÈÃÿһµ¶µÄ»¡¶È¶¼²»Ò»Ñù
  96.     var cx = (x1 + x2) / 2 + rand(-60, 60);
  97.     var cy = (y1 + y2) / 2;
  98.     var prevX = x1, prevY = y1;
  99.     var segMs = Math.max(16, Math.round(durMs / steps));

  100.     for (var i = 1; i <= steps; i++) {
  101.         var t = i / steps;
  102.         var mt = 1 - t;
  103.         // ¶þ´Î±´Èû¶û¹«Ê½
  104.         var bx = mt * mt * x1 + 2 * mt * t * cx + t * t * x2;
  105.         var by = mt * mt * y1 + 2 * mt * t * cy + t * t * y2;
  106.         // ÿһС¶Î¶¼¼ÓÒ»µãÊÖ¶¶
  107.         bx += rand(-2, 2);
  108.         by += rand(-2, 2);
  109.         try {
  110.             auto.swip(prevX, prevY, bx, by, segMs, 0);
  111.         } catch (e) {
  112.             try { auto.swipe(prevX, prevY, bx, by, segMs); } catch (e2) {}
  113.         }
  114.         prevX = bx; prevY = by;

  115.         // ¼¼ÇÉ£ºÖÐÍ¾Ëæ»ú"ÊÖÖ¸¶ÙÒ»ÏÂ"£¬¸üÏñÕæÈËÔÚ¿´ÄÚÈÝ
  116.         if (CFG.microPauseRate > 0 && rand(1, 100) <= CFG.microPauseRate && i < steps - 1) {
  117.             sleep.millisecond(rand(40, 160));
  118.         }
  119.     }
  120. }

  121. function lineSwipe(x1, y1, x2, y2, durMs) {
  122.     try { auto.swip(x1, y1, x2, y2, durMs, 0); }
  123.     catch (e) { try { auto.swipe(x1, y1, x2, y2, durMs); } catch (e2) {} }
  124. }

  125. // £¡£¡£¡¹Ø¼ü£º¶ÌÊÓÆµ·­Ò³±ØÐëÓá¾Ò»´ÎÍêÕûµÄ¿ìËÙ³¤»¬¡¿£¡£¡£¡
  126. // ²ð³ÉÊ®¼¸¶ÎС»¬¶¯£¨ÇúÏߣ©£¬¿ìÊÖ»á°Ñÿ¶Îµ±³É¶ÀÁ¢µÄ΢СÊÖÊÆ ¡ú »­Ãæ¶¶¶¯µ«²»·­Ò³
  127. function onceSwipe(x1, y1, x2, y2, durMs) {
  128.     try { auto.swip(x1, y1, x2, y2, durMs, 0); }
  129.     catch (e) { try { auto.swipe(x1, y1, x2, y2, durMs); } catch (e2) {} }
  130. }

  131. // ÏòÉÏ·­Ò»ÆÁ£¨ÐÅÏ¢Á÷×î³£Óã©
  132. function swipeUpFeed() {
  133.     var w = sw(), h = sh();
  134.     var x1 = rand(Math.round(w * 0.35), Math.round(w * 0.65));

  135.     if (CFG.feedType === "video") {
  136.         // ¶ÌÊÓÆµÄ£Ê½£ºÆðµã¿¿Ï¡¢Öյ㿿ÉÏ¡¢¾àÀ볤¡¢Ëٶȿ죬һ´Î¸ã¶¨
  137.         var vy1 = Math.round(h * (0.78 + Math.random() * 0.07));  // 0.78~0.85
  138.         var vy2 = Math.round(h * (0.12 + Math.random() * 0.08));  // 0.12~0.20
  139.         var vdur = rand(CFG.videoSwipeMinMs, CFG.videoSwipeMaxMs); // 220~380ms
  140.         onceSwipe(x1, vy1, x1 + rand(-12, 12), vy2, vdur);
  141.         log("·­Ò³ÉÏ»¬(µ¥´Î) Æðµãy=" + vy1 + " ÖÕµãy=" + vy2 + " ¾àÀë" + (vy1 - vy2) + "px x=" + x1 + " ºÄʱ" + vdur + "ms");
  142.         return true;
  143.     }

  144.     // Áбíģʽ£ºÇúÏß»¬¶¯£¨ÉèÖÃÒ³/ͼÎÄÁбíÕâÀà²ÅÓõÃÉÏ£©
  145.     var y1 = rand(Math.round(h * 0.72), Math.round(h * 0.85));
  146.     var x2 = x1 + rand(-70, 70);
  147.     var y2 = rand(Math.round(h * 0.18), Math.round(h * 0.35));
  148.     var dur = rand(CFG.swipeMinMs, CFG.swipeMaxMs);
  149.     if (CFG.curveEnable) bezierSwipe(x1, y1, x2, y2, dur, CFG.curveSteps);
  150.     else lineSwipe(x1, y1, x2, y2, dur);
  151.     log("ÉÏ»¬(Áбí) (" + Math.round(x1) + "," + y1 + ")->(" + Math.round(x2) + "," + y2 + ") " + dur + "ms");
  152.     return true;
  153. }

  154. // ÏòÏ»ػ¬£¨ÕæÈË¿´Íê»áÍù»Ø·­£¬ÊÓÆµÁ÷Àï = ·­»ØÉÏÒ»¸öÊÓÆµ£©
  155. function swipeDownFeed() {
  156.     var w = sw(), h = sh();
  157.     var x1 = rand(Math.round(w * 0.35), Math.round(w * 0.65));

  158.     if (CFG.feedType === "video") {
  159.         var vy1 = Math.round(h * (0.15 + Math.random() * 0.08));
  160.         var vy2 = Math.round(h * (0.80 + Math.random() * 0.06));
  161.         var vdur = rand(CFG.videoSwipeMinMs, CFG.videoSwipeMaxMs);
  162.         onceSwipe(x1, vy1, x1 + rand(-12, 12), vy2, vdur);
  163.         STAT.back++;
  164.         log("»Ø»¬(µ¥´Î) ÉÏÒ»¸öÊÓÆµ (" + x1 + "," + vy1 + ")->(" + vy2 + ") " + vdur + "ms  [Àۼƻػ¬" + STAT.back + "´Î]");
  165.         return true;
  166.     }

  167.     var y1 = rand(Math.round(h * 0.22), Math.round(h * 0.35));
  168.     var x2 = x1 + rand(-50, 50);
  169.     var y2 = rand(Math.round(h * 0.70), Math.round(h * 0.82));
  170.     var dur = rand(CFG.swipeMinMs, CFG.swipeMaxMs);
  171.     if (CFG.curveEnable) bezierSwipe(x1, y1, x2, y2, dur, CFG.curveSteps);
  172.     else lineSwipe(x1, y1, x2, y2, dur);
  173.     log("»Ø»¬Ò»Ï£¨ÄâÈË£©");
  174.     return true;
  175. }

  176. // ÂýÂý"¿´ÄÚÈÝ"µÄС·ù»¬¶¯£¨ÔĶÁÀàÈÎÎñÓã©
  177. function slowReadSwipe() {
  178.     if (CFG.feedType === "video") {
  179.         // ÊÓÆµÁ÷ûÓÐ"ÂýËÙÔĶÁ"£¬¸Ä³ÉÀÏÀÏʵʵ¿´Ò»»á¶ù£¨Í£Áô¾ÍÊÇ×îºÃµÄÄâÈË£©
  180.         var s = rand(1500, 3500);
  181.         STAT.stay++;
  182.         log("Í£Áô¹Û¿´ " + s + "ms  [ÀÛ¼ÆÍ£Áô" + STAT.stay + "´Î]");
  183.         sleep.millisecond(s);
  184.         return;
  185.     }
  186.     var w = sw(), h = sh();
  187.     var x = rand(Math.round(w * 0.4), Math.round(w * 0.6));
  188.     var y1 = Math.round(h * 0.78);
  189.     var y2 = Math.round(h * 0.48);
  190.     if (CFG.curveEnable) bezierSwipe(x, y1, x, y2, rand(1200, 2000), 20);
  191.     else lineSwipe(x, y1, x, y2, 1500);
  192.     log("ÂýËÙÔĶÁ»¬¶¯");
  193. }

  194. // ---------------- ·­Ò³Ð£Ñ飺»¬ÁËû»»ÊÓÆµ£¬¾Í²¹Ò»´Î¸üÇ¿µÄ»¬ ----------------
  195. function shotFingerprint() {
  196.     try {
  197.         var b = screen.screenShotFull().toBase64();
  198.         if (!b) return "";
  199.         // ȡͷβ¸÷ 200 ×Ö·û×öÖ¸ÎÆ£¬¹»ÓÃÇÒ¿ì
  200.         return b.substring(0, 200) + "|" + b.substring(b.length - 200) + "|" + b.length;
  201.     } catch (e) { return ""; }
  202. }

  203. // ·µ»Ø true = È·ÈÏ·­Ò³³É¹¦
  204. function swipeUpWithVerify() {
  205.     var before = shotFingerprint();
  206.     swipeUpFeed();
  207.     sleep.millisecond(700); // µÈÊÓÆµÇл»¶¯»­
  208.     var after = shotFingerprint();
  209.     if (before && after && before === after) {
  210.         STAT.retry++;
  211.         log("¡Á »­ÃæÎޱ仯(û·­Ò³)£¬²¹Ò»´ÎÇ¿»¬ 0.88h¡ú0.08h 250ms");
  212.         var w = sw(), h = sh();
  213.         onceSwipe(Math.round(w / 2), Math.round(h * 0.88), Math.round(w / 2), Math.round(h * 0.08), 250);
  214.         sleep.millisecond(900);
  215.         var after2 = shotFingerprint();
  216.         if (after2 && after2 !== before) {
  217.             STAT.ok++;
  218.             log("¡Ì ²¹»¬³É¹¦£¬ÒÑÇе½ÐÂÊÓÆµ");
  219.             return true;
  220.         }
  221.         log("¡Á ²¹»¬ºóÈÔδ±ä»¯£¬¿ÉÄܱ»µ¯´°/Ö±²¥Ò³µ²×¡");
  222.         return false;
  223.     }
  224.     STAT.ok++;
  225.     log("¡Ì ·­Ò³³É¹¦£¬»­ÃæÒѱ仯£¨±¾ÂÖµÚ " + STAT.ok + " ´ÎÓÐЧ·­Ò³£©");
  226.     return true;
  227. }

  228. // ---------------- ËÄ¡¢¼¼ÇÉ2£ºËæ»úÆ«ÒÆµã»÷ ----------------
  229. // ÓÀÔ¶µãͬһ¸öÏñËØ = Ò»ÑۼٵĻúÆ÷ÈË£¬µãµÄʱºò¸ø¸ö¶¶¶¯
  230. function tapRandom(cx, cy, offset) {
  231.     offset = (offset === undefined) ? CFG.offsetPx : offset;
  232.     var x = cx + rand(-offset, offset);
  233.     var y = cy + rand(-offset, offset);
  234.     if (x < 0) x = 0; if (y < 0) y = 0;
  235.     if (x > sw()) x = sw(); if (y > sh()) y = sh();
  236.     try { auto.clickPoint(x, y); }
  237.     catch (e) { try { device.clickPoint(x, y); } catch (e2) {} }
  238.     log("µã»÷ (" + x + "," + y + ") ¶¶¶¯¡À" + offset);
  239.     return { x: x, y: y };
  240. }

  241. // ÔÚ¾ØÐÎÇøÓòÄÚËæ»úµã£¨°Ù·Ö±Èд·¨£¬²»Ìô·Ö±æÂÊ£©
  242. // areaPct = [x1%, y1%, x2%, y2%]£¬ÀýÈç [0.1,0.2,0.9,0.6]
  243. function tapAreaPct(areaPct) {
  244.     var w = sw(), h = sh();
  245.     var x1 = Math.round(areaPct[0] * w), y1 = Math.round(areaPct[1] * h);
  246.     var x2 = Math.round(areaPct[2] * w), y2 = Math.round(areaPct[3] * h);
  247.     // ¶¶¶¯ÉÏÏÞ 25px£ºÇøÓòÔ½´ó²»´ú±íÒª¶¶Ô½ºÝ£¬¶¶Ì«´ó»áÎó´¥µ½ÅԱߵİ´Å¥£¨µãÔÞ/ÆÀÂÛ/Í·Ïñ£©
  248.     var off = Math.min(25, Math.max(8, (x2 - x1) / 4));
  249.     return tapRandom(Math.round((x1 + x2) / 2), Math.round((y1 + y2) / 2), off);
  250. }

  251. // ---------------- Îå¡¢¼¼ÇÉ3£º³¤°´ + Çáµã ----------------
  252. function longTap(x, y, ms) {
  253.     ms = ms || 800;
  254.     try { auto.longClickPoint(x, y, ms); }
  255.     catch (e) {
  256.         // ûÓÐ longClick ½Ó¿Úʱ£¬ÓÃ"°´ÏÂ-Í£Áô-̧Æð"ÊÖÊÆ¶µµ×
  257.         try {
  258.             auto.swip(x, y, x + rand(-2, 2), y + rand(-2, 2), ms, 0);
  259.         } catch (e2) {}
  260.     }
  261.     log("³¤°´ (" + x + "," + y + ") " + ms + "ms");
  262. }

  263. // ---------------- Áù¡¢Ç°Ì¨Åжϣ¨¶àͨµÀ£¬Êµ²âÓеÄÉ豸 getTopPackName ·µ»Ø¿Õ£©----------------
  264. function topPkg() {
  265.     try { var t1 = app.getTopPackName(); if (t1) return t1; } catch (e) {}
  266.     try { var t2 = app.getTopPackNameV2(); if (t2) return t2; } catch (e) {}
  267.     try { var t3 = auto.getTopPackName(); if (t3) return t3; } catch (e) {}
  268.     // ¶µµ×£º´Óµ±Ç° Activity Àï½Ø°üÃû£¨ÐÎÈç com.smile.gifmaker/xxx.Activity£©
  269.     var act = "";
  270.     try { act = "" + app.getCurrentActivity(); } catch (e) {
  271.         try { act = "" + app.getAgentCurrenAcitvity(); } catch (e2) { act = ""; }
  272.     }
  273.     if (act && act.indexOf("/") > 0) return act.substring(0, act.indexOf("/"));
  274.     return act || "";
  275. }

  276. function isInstalled(pkg) {
  277.     // ·½Ê½1£¨×î¿É¿¿£©£ºÄܲ鵽°æ±¾ºÅ/Ó¦ÓÃÃû = ×°ÁË
  278.     try { var v = app.getVerName(pkg); if (v) return true; } catch (e) {}
  279.     try { var n = app.getAppName(pkg); if (n) return true; } catch (e) {}
  280.     // ·½Ê½2£ºgetAllApp ·µ»Ø¸ñʽ²»¶¨£¨×Ö·û´®»ò¶ÔÏ󣩣¬Í³Ò»ÐòÁл¯ºóÆ¥Åä
  281.     try {
  282.         var list = app.getAllApp();
  283.         for (var i = 0; i < list.length; i++) {
  284.             var s = "";
  285.             try {
  286.                 s = (typeof list[i] === "object") ? JSON.stringify(list[i]) : String(list[i]);
  287.             } catch (e1) { s = ""; }
  288.             if (s.indexOf(pkg) >= 0) return true;
  289.         }
  290.     } catch (e) {}
  291.     return false; // ×¢Ò⣺¼ì²âAPI²»È«Ê±¿ÉÄÜÎ󱨣¬openTarget Àï²»×öÓ²»ØÍË
  292. }

  293. // Æô¶¯ºó/Ë¢µÄ¹ý³ÌÖеĵ¯´°¶µµ×£¨¿ìÊÖ³£¼û£ºÇàÉÙÄêģʽ¡¢Éý¼¶¡¢È¨ÏÞ£©
  294. // Ö»·Å"µãÁ˾ø¶Ô°²È«"µÄ´Ê£¬²»·Å"¹Ø±Õ/È·¶¨"·ÀÖ¹ÎóµãÒµÎñ°´Å¥
  295. var POPUP_WORDS = ["ÎÒÖªµÀÁË", "ÒÔºóÔÙ˵", "Ï´ÎÔÙ˵", "Ôݲ»¸üÐÂ", "Ôݲ»Éý¼¶",
  296.                    "Ìø¹ý", "ÉÔºóÔÙ˵", "¾Ü¾ø", "²»ÔÊÐí"];

  297. // È¡ÕûÒ³Îı¾£¨Ò»´Îµ÷ÓÃÄõ½È«²¿ÎÄ×Ö£¬±ÜÃâ¶Ô´Ê¿âÖð¸ö nodeSearch äɨˢ¾¯¸æ£©
  298. function pageText() {
  299.     var t = "";
  300.     try { t = String(auto.getXml() || ""); } catch (e) { t = ""; }
  301.     if (!t || t.length < 20) {
  302.         try { t = String(ocr.getAllString() || ""); } catch (e) { t = ""; }
  303.     }
  304.     return t;
  305. }

  306. function killPopupOnce() {
  307.     if (!CFG.clearPopupEnable) return false;
  308.     // ¹Ø¼ü£ºÏÈÈ·ÈÏÒ³ÃæÉÏÕæµÄÓе¯´°´Ê£¬ÔÙÈ¥²éÕҽڵ㡣
  309.     // ·ñÔòÕÒ²»µ½ÔªËØÊ±ÒýÇæ»á´òÓ¡"getNode´íÎóÔªËØ0δÕÒµ½"¾¯¸æ£¬Ë¢ÂúÈÕÖ¾¡£
  310.     var page = pageText();
  311.     if (!page) return false; // È¡²»µ½Ò³ÃæÐÅÏ¢¾Í·ÅÆú±¾ÂÖɱµ¯´°£¬²»Ó²É¨

  312.     for (var i = 0; i < POPUP_WORDS.length; i++) {
  313.         if (page.indexOf(POPUP_WORDS[i]) < 0) continue; // Ò³ÃæÀïûÕâ¸ö´Ê£¬Ìø¹ý
  314.         // ͨµÀ1£º½Úµã£¨ÏÈÑéÃ÷½ÚµãÕæÉíÔٵ㣩
  315.         var n = null;
  316.         try { n = auto.nodeSearch(300).text(POPUP_WORDS[i]).getNode(0); } catch (e) { n = null; }
  317.         if (n) {
  318.             var txtN = "";
  319.             try { txtN = String(n.getText() || ""); } catch (e1) { txtN = ""; }
  320.             if (txtN.indexOf(POPUP_WORDS[i]) >= 0) {
  321.                 var clicked = false;
  322.                 try { n.clickPoint(); clicked = true; } catch (e2) {
  323.                     try { n.click(); clicked = true; } catch (e3) {}
  324.                 }
  325.                 if (clicked) {
  326.                     log("¹Øµ¯´°(½Úµã): " + POPUP_WORDS[i]);
  327.                     sleep.millisecond(1000);
  328.                     return true;
  329.                 }
  330.             }
  331.         }
  332.         // ͨµÀ2£ºOCR
  333.         try {
  334.             var p = ocr.findTapPoint(POPUP_WORDS[i]);
  335.             if (p && typeof p.x !== "undefined" && p.x > 0) {
  336.                 auto.clickPoint(p.x + rand(-2, 2), p.y + rand(-2, 2));
  337.                 log("¹Øµ¯´°(OCR): " + POPUP_WORDS[i]);
  338.                 sleep.millisecond(1000);
  339.                 return true;
  340.             }
  341.         } catch (e) {}
  342.     }
  343.     return false;
  344. }

  345. // ---------------- Æß¡¢Æô¶¯Ä¿±êAPP ----------------
  346. function openTarget() {
  347.     // ´òÓ¡¼ì²â½á¹û£¬·½±ãºË¶Ô£¨Ó¦ÓÃÃû/°æ±¾ÄÜÈ¡µ½¾ÍÊÇ×°ÁË£©
  348.     var vName = "", aName = "";
  349.     try { vName = app.getVerName(CFG.targetPkg); } catch (e) {}
  350.     try { aName = app.getAppName(CFG.targetPkg); } catch (e) {}
  351.     log("°²×°¼ì²â: " + CFG.targetPkg + " Ó¦ÓÃÃû=" + (aName || "È¡²»µ½") + " °æ±¾=" + (vName || "È¡²»µ½"));
  352.     if (!isInstalled(CFG.targetPkg)) {
  353.         // Ö»Ìáʾ£¬²»»ØÍË¡ª¡ª°²×°¼ì²âAPIÔÚ²¿·ÖÉ豸Éϲ»È«£¬Îó±¨ÂʸßÓÚ©±¨ÂÊ
  354.         log("×¢Ò⣺°²×°¼ì²âδȷÈÏ£¨¿ÉÄÜÎ󱨣©£¬ÈÔÖ±½Ó³¢ÊÔÆô¶¯");
  355.     }
  356.     log("Æô¶¯ " + CFG.targetPkg);
  357.     try { app.openApp(CFG.targetPkg); } catch (e) { try { app.startApp(CFG.targetPkg); } catch (e2) {} }
  358.     rSleep(4500, 6000);
  359.     var top = "";
  360.     for (var i = 0; i < 12; i++) {
  361.         killPopupOnce(); // ÊׯôµÄÇàÉÙÄêģʽ/ȨÏÞ/Éý¼¶µ¯´°
  362.         top = topPkg();
  363.         if (top === CFG.targetPkg) { log("ÒÑÔÚǰ̨: " + top); return true; }
  364.         sleep.millisecond(800);
  365.     }
  366.     // ²¿·ÖÉ豸µÄǰ̨APIÒ»ÂÉ·µ»Ø¿Õ£¨·Ç½Å±¾ÎÊÌ⣩£¬´ËʱÔÙ²¹Ò»´ÎÆô¶¯¶µµ×£¬È»ºóÕÕ³£ÍùÏÂ×ß
  367.     if (!top) {
  368.         log("Ìáʾ£º±¾»úǰ̨APIÈ¡²»µ½°üÃû£¨ÊôÉ豸¼æÈÝÎÊÌ⣬²»Ó°Ï컬¶¯£©");
  369.         try { app.openApp(CFG.targetPkg); } catch (e) { try { app.startApp(CFG.targetPkg); } catch (e2) {} }
  370.         sleep.millisecond(3000);
  371.         log("ÒѲ¹Æô¶¯Ò»´Î£¬¼ÌÐø»¬¶¯");
  372.     } else {
  373.         log("µ±Ç°Ç°Ì¨=" + top + "£¬Ä¿±ê=" + CFG.targetPkg + "£¨¼ÌÐø»¬¶¯£¬²»Ó°Ï죩");
  374.     }
  375.     return false;
  376. }

  377. // ---------------- Æß¡¢Ö÷Á÷³Ì ----------------
  378. function main() {
  379.     log("===== Àý×Ó1 ±´Èû¶ûÇúÏß»¬¶¯ÑÝʾ ¿ªÊ¼£¨Ä£Ê½:" + CFG.feedType + "£©=====");

  380.     STAT.startMs = new Date().getTime();

  381.     var w = sw(), h = sh();
  382.     log("·Ö±æÂÊ: " + w + " x " + h);

  383.     // ¿ª³¡ÐÅÏ¢£ºÉ豸¡¢µçÁ¿¡¢Ä£Ê½¡¢±¾ÂÖ²ÎÊý
  384.     try { log("É豸: " + device.getModel() + " / ϵͳ " + device.getVersion()); } catch (e) {}
  385.     try { log("µçÁ¿: " + device.getBatteryLevel() + "%  ³äµçÖÐ: " + device.isCharging()); } catch (e) {}
  386.     log("ÔËÐвÎÊý: ÂÖÊý=" + CFG.loopCount + " ģʽ=" + CFG.feedType +
  387.         " ·­Ò³ºÄʱ=" + CFG.videoSwipeMinMs + "~" + CFG.videoSwipeMaxMs + "ms" +
  388.         " Í£Áô=" + CFG.stayMinMs + "~" + CFG.stayMaxMs + "ms" +
  389.         " »Ø»¬¸ÅÂÊ=" + CFG.backSwipeRate + "%");

  390.     openTarget();

  391.     for (var i = 1; i <= CFG.loopCount; i++) {
  392.         var roundStart = new Date().getTime();
  393.         log("---- µÚ " + i + " / " + CFG.loopCount + " ÂÖ£¨½ø¶È " +
  394.             Math.round(i * 100 / CFG.loopCount) + "%£©----");

  395.         // 0) ÿÂÖÏÈ˳ÊÖÇåһϵ¯´°£¨ÇàÉÙÄêģʽ/Éý¼¶ËæÊ±»á±Ä£©
  396.         if (killPopupOnce()) {
  397.             STAT.popup++;
  398.             log("±¾ÂÖÇåÀíÁ˵¯´° [ÀۼƵ¯´°" + STAT.popup + "´Î]");
  399.         }

  400.         // 1) Ö÷Ðж¯£ºÉÏ»¬·­Ò³£¨´øÐ£Ñ飬û·­³É¹¦¾Í²¹Ò»´Î£©
  401.         if (CFG.verifySwipe) swipeUpWithVerify();
  402.         else swipeUpFeed();

  403.         // 2) ÄâÈËÍ£Áô£ºËæ»ú¿´Ò»»á¶ù
  404.         var st = rand(CFG.stayMinMs, CFG.stayMaxMs);
  405.         log("Í£Áô " + st + "ms ¹Û¿´");
  406.         sleep.millisecond(st);

  407.         // 3) ¸ÅÂÊÐԻػ¬£ºÕæÈ˲»Êǵ¥ÏòÏÂÀ­µÄ
  408.         if (rand(1, 100) <= CFG.backSwipeRate) {
  409.             rSleep(400, 1200);
  410.             swipeDownFeed();
  411.             rSleep(600, 1500);
  412.         }

  413.         // 4) ¸ÅÂÊÐÔÂýËÙÔĶÁ£ºÅ¼¶ûÍ£ÏÂÀ´ÈÏÕæ¿´Ò»Ìõ
  414.         if (rand(1, 100) <= 30) {
  415.             slowReadSwipe();
  416.             rSleep(1000, 2500);
  417.         }

  418.         // 5) ¸ÅÂÊÐÔËæ»úÇáµã¿Õ°×Çø£ºÄ£ÄâÎó´¥/¿´Í¼Æ¬£¨ÊÓÆµÁ÷ĬÈϹرգ©
  419.         if (CFG.randomTapEnable && rand(1, 100) <= 20) {
  420.             tapAreaPct([0.15, 0.25, 0.85, 0.55]);
  421.             rSleep(800, 1800);
  422.             if (CFG.tapBackEnable) {
  423.                 try { auto.pressBack(); } catch (e) { try { device.pressBack(); } catch (e2) {} }
  424.             }
  425.             rSleep(600, 1200);
  426.         }

  427.         log("±¾ÂÖºÄʱ " + (new Date().getTime() - roundStart) + "ms");

  428.         // ÿÂֻ㱨һ´ÎµçÁ¿£¬³¤Ê±¼äÅÜÄÜ¿´³öµôµçËÙ¶È
  429.         if (i % 3 === 0) {
  430.             try { log("µ±Ç°µçÁ¿: " + device.getBatteryLevel() + "%"); } catch (e) {}
  431.         }
  432.     }

  433.     // ÊÕβ£ºÄ¬ÈÏÍ£ÔÚÔ­µØ£¨Ë¢ÊÓÆµ¾ÍÊÇÈÃËüÒ»Ö±´ýÔÚAPPÀ
  434.     if (CFG.finishGoHome) {
  435.         safe(function () { auto.home(); }, "»Ø×ÀÃæ");
  436.         log("ÒÑ»Ø×ÀÃæ");
  437.     } else {
  438.         log("ÊÕβ£ºÍ£ÔÚ " + CFG.targetPkg + " ²»Í˳ö");
  439.     }

  440.     // ½áÊø»ã×ܱ¨¸æ
  441.     var totalMs = new Date().getTime() - STAT.startMs;
  442.     log("================ ÔËÐлã×Ü ================");
  443.     log("×ܺÄʱ: " + Math.round(totalMs / 1000) + " Ã루ƽ¾ùµ¥ÂÖ " +
  444.         Math.round(totalMs / CFG.loopCount) + "ms£©");
  445.     log("ÓÐЧ·­Ò³: " + STAT.ok + " ´Î   ²¹»¬: " + STAT.retry + " ´Î");
  446.     log("»Ø»¬: " + STAT.back + " ´Î   Í£Áô¹Û¿´: " + STAT.stay + " ´Î   ÇåÀíµ¯´°: " + STAT.popup + " ´Î");
  447.     if (CFG.loopCount > 0) {
  448.         log("·­Ò³³É¹¦ÂÊ: " + Math.round(STAT.ok * 100 / CFG.loopCount) + "%");
  449.     }
  450.     log("==========================================");

  451.     flushLog();
  452.     log("===== Àý×Ó1 ½áÊø£¬ÈÕÖ¾: " + CFG.logPath + " =====");
  453.     try { toast.show("ÑÝʾÍê³É ·­Ò³" + STAT.ok + "´Î"); } catch (e) {}
  454. }

  455. main();
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-9-10 07:27 , Processed in 0.086496 second(s), 33 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí