注册 登录
发贴工具
查看: 10|回复: 0
打印 上一主题 下一主题

[24小时收录超级好的网站] 启动极速版任务页看小说赚钱自动阅读

[复制链接]

2577

主题

2625

帖子

1万

积分

积分
15638
跳转到指定楼层
楼主
启动极速版任务页看小说赚钱自动阅读
启动极速版任务页看小说赚钱自动阅读 群发软件发帖工具
  1. // AIWROK 完整自动化流程:启动极速版任务页看小说赚钱自动阅读
  2. // 全程使用 agent 方式操作,不依赖无障碍权限

  3. print.log("===== 极速版看小说做任务流程启动 =====");
  4. print.time();

  5. // ========== 工具函数 ==========
  6. function 执行Shell(命令) {
  7.     var 结果 = agent.shell(命令);
  8.     if (!结果) return "";
  9.    
  10.     var 结果字符串 = "";
  11.     if (typeof 结果 === "string") {
  12.         结果字符串 = 结果;
  13.     } else if (结果.toString) {
  14.         结果字符串 = 结果.toString();
  15.     } else {
  16.         结果字符串 = "" + 结果;
  17.     }
  18.    
  19.     var startIdx = -1;
  20.     if (typeof 结果字符串.indexOf === "function") {
  21.         startIdx = 结果字符串.indexOf("successMsg:");
  22.     }
  23.    
  24.     if (startIdx !== -1) {
  25.         var afterSuccess = 结果字符串.substring(startIdx + 11);
  26.         var errorIdx = afterSuccess.indexOf(",errorMsg:");
  27.         if (errorIdx !== -1) {
  28.             var content = afterSuccess.substring(0, errorIdx);
  29.             var endMarker = content.indexOf("UI hierchary dumped to:");
  30.             if (endMarker !== -1) {
  31.                 content = content.substring(0, endMarker);
  32.             }
  33.             return "" + content.trim();
  34.         }
  35.         return "" + afterSuccess.trim();
  36.     }
  37.    
  38.     return "" + 结果字符串;
  39. }

  40. function 获取UI() {
  41.     var 临时文件 = "/sdcard/ui_dump.xml";
  42.     agent.shell("uiautomator dump --compressed " + 临时文件 + " 2>/dev/null");
  43.     var 结果 = agent.shell("cat " + 临时文件);
  44.    
  45.     if (!结果) return "";
  46.    
  47.     var 结果字符串 = "";
  48.     if (typeof 结果 === "string") {
  49.         结果字符串 = 结果;
  50.     } else if (结果.toString) {
  51.         结果字符串 = 结果.toString();
  52.     } else {
  53.         结果字符串 = "" + 结果;
  54.     }
  55.    
  56.     var startIdx = -1;
  57.     if (typeof 结果字符串.indexOf === "function") {
  58.         startIdx = 结果字符串.indexOf("successMsg:");
  59.     }
  60.    
  61.     var content = "";
  62.     if (startIdx !== -1) {
  63.         var afterSuccess = 结果字符串.substring(startIdx + 11);
  64.         var errorIdx = afterSuccess.indexOf(",errorMsg:");
  65.         if (errorIdx !== -1) {
  66.             content = afterSuccess.substring(0, errorIdx);
  67.             var endMarker = content.indexOf("UI hierchary dumped to:");
  68.             if (endMarker !== -1) {
  69.                 content = content.substring(0, endMarker);
  70.             }
  71.         } else {
  72.             content = afterSuccess;
  73.         }
  74.         content = content.trim();
  75.     } else {
  76.         content = 结果字符串;
  77.     }
  78.    
  79.     return "" + content;
  80. }

  81. function 字符串长度(str) {
  82.     if (typeof str.length === "function") {
  83.         return str.length();
  84.     }
  85.     return str.length || 0;
  86. }

  87. function 获取当前包名() {
  88.     var uiXml = 获取UI();
  89.     var m = uiXml.match(/package="([^"]+)"/);
  90.     if (m) {
  91.         return "" + m[1];
  92.     }
  93.     return "";
  94. }

  95. function 查找包含文字的节点(xml, 关键词) {
  96.     var 节点列表 = [];
  97.     for (var i = 0; i < 关键词.length; i++) {
  98.         var 词 = 关键词[i];
  99.         var pos = 0;
  100.         while (true) {
  101.             pos = xml.indexOf('text="' + 词 + '"', pos);
  102.             if (pos < 0) break;
  103.             var boundsStart = xml.indexOf('bounds="', pos);
  104.             if (boundsStart >= 0) {
  105.                 var boundsEnd = xml.indexOf('"', boundsStart + 8);
  106.                 if (boundsEnd >= 0) {
  107.                     var boundsStr = xml.substring(boundsStart + 8, boundsEnd);
  108.                     var m = boundsStr.match(/\[(\d+),(\d+)\]\[(\d+),(\d+)\]/);
  109.                     if (m) {
  110.                         var node = {
  111.                             text: 词,
  112.                             x1: parseInt(m[1]),
  113.                             y1: parseInt(m[2]),
  114.                             x2: parseInt(m[3]),
  115.                             y2: parseInt(m[4]),
  116.                             cx: (parseInt(m[1]) + parseInt(m[3])) / 2,
  117.                             cy: (parseInt(m[2]) + parseInt(m[4])) / 2
  118.                         };
  119.                         节点列表.push(node);
  120.                     }
  121.                 }
  122.             }
  123.             pos += 字符串长度(词);
  124.         }
  125.     }
  126.     return 节点列表;
  127. }

  128. function 模拟阅读(持续时间秒) {
  129.     print.log("开始模拟阅读,持续 " + 持续时间秒 + " 秒");
  130.     var 剩余时间 = 持续时间秒;
  131.     while (剩余时间 > 0) {
  132.         agent.swip(Math.floor(屏幕宽 * 0.8), Math.floor(屏幕高 * 0.5), Math.floor(屏幕宽 * 0.2), Math.floor(屏幕高 * 0.5), 300);
  133.         sleep.second(秒 = 1);
  134.         剩余时间 -= 1;
  135.         print.log("剩余阅读时间:" + 剩余时间 + " 秒");
  136.     }
  137.     print.log("模拟阅读结束");
  138. }

  139. // ========== 配置区 ==========
  140. var APP包名 = "com.ss.android.article.lite";

  141. var 循环次数 = 5;
  142. var 当前循环 = 0;

  143. var 任务TabX = 0.5;
  144. var 任务TabY = 0.9656;

  145. // ========== 获取设备信息 (agent模式) ==========
  146. var wm结果 = 执行Shell("wm size");
  147. var m = wm结果.match(/(\d+)x(\d+)/);
  148. var 屏幕宽 = m ? parseInt(m[1]) : 1080;
  149. var 屏幕高 = m ? parseInt(m[2]) : 2400;
  150. print.log("屏幕尺寸:" + 屏幕宽 + " x " + 屏幕高);
  151. print.log("代理状态:" + (agent.isOpen() ? "已开启" : "未开启"));
  152. print.log("目标APP:" + APP包名 + " (今日头条极速版)");

  153. // ========================================
  154. // 主循环开始
  155. // ========================================
  156. for (当前循环 = 1; 循环次数 == 0 || 当前循环 <= 循环次数; 当前循环++) {
  157.     if (循环次数 > 0) {
  158.         print.log("\n======================================");
  159.         print.log("===== 第 " + 当前循环 + " / " + 循环次数 + " 次循环 =====");
  160.         print.log("======================================");
  161.     } else {
  162.         print.log("\n======================================");
  163.         print.log("===== 第 " + 当前循环 + " 次循环(无限模式)=====");
  164.         print.log("======================================");
  165.     }

  166.     // ========================================
  167.     // 步骤1:启动今日头条极速版
  168.     // ========================================
  169.     print.log("\n========== 步骤1:启动今日头条极速版 ==========");
  170.    
  171.     var 启动成功 = false;
  172.     var 启动尝试次数 = 0;
  173.     var 最大启动尝试 = 3;
  174.    
  175.     while (!启动成功 && 启动尝试次数 < 最大启动尝试) {
  176.         启动尝试次数++;
  177.         try {
  178.             agent.shell("monkey -p " + APP包名 + " -c android.intent.category.LAUNCHER 1");
  179.             print.log("✓ 第" + 启动尝试次数 + "次尝试启动今日头条极速版");
  180.         } catch (e) {
  181.             print.log("⚠ 第" + 启动尝试次数 + "次启动失败:" + e.message);
  182.         }
  183.         
  184.         sleep.second(秒 = 5);
  185.         
  186.         var 当前页面包名 = 获取当前包名();
  187.         print.log("当前页面包名:" + 当前页面包名);
  188.         
  189.         if (当前页面包名 === APP包名) {
  190.             启动成功 = true;
  191.             print.log("✓ APP启动成功");
  192.         } else {
  193.             print.log("⚠ 当前页面不是今日头条极速版,准备重新启动");
  194.         }
  195.     }
  196.    
  197.     if (!启动成功) {
  198.         print.log("✗ 多次尝试启动失败,跳过本次循环");
  199.         continue;
  200.     }

  201.     // ========================================
  202.     // 步骤2:通过UI解析点击底部「任务」Tab
  203.     // ========================================
  204.     print.log("\n========== 步骤2:点击任务Tab ==========");
  205.    
  206.     var 找到任务Tab = false;
  207.     var 尝试次数2 = 0;
  208.     var 最大尝试次数2 = 3;
  209.    
  210.     while (!找到任务Tab && 尝试次数2 < 最大尝试次数2) {
  211.         尝试次数2++;
  212.         var 首页UI = 获取UI();
  213.         var xml长度2 = 字符串长度(首页UI);
  214.         
  215.         print.log("第 " + 尝试次数2 + " 次尝试获取首页UI,长度:" + xml长度2);
  216.         
  217.         if (xml长度2 < 100) {
  218.             print.log("UI数据过短,重试");
  219.             sleep.second(秒 = 1);
  220.             continue;
  221.         }
  222.         
  223.         var 任务Tab节点 = 查找包含文字的节点(首页UI, ["任务"]);
  224.         
  225.         if (任务Tab节点.length > 0) {
  226.             var 任务Tab = 任务Tab节点[0];
  227.             var 任务X = (任务Tab.x1 + 任务Tab.x2) / 2 / 屏幕宽;
  228.             var 任务Y = (任务Tab.y1 + 任务Tab.y2) / 2 / 屏幕高;
  229.             agent.clickPercent(任务X, 任务Y);
  230.             print.log("✓ 已点击任务Tab,百分比坐标:(" + 任务X.toFixed(4) + ", " + 任务Y.toFixed(4) + ")");
  231.             找到任务Tab = true;
  232.         } else {
  233.             print.log("⚠ 未找到任务Tab,尝试使用默认坐标");
  234.             agent.clickPercent(0.5, 0.9656);
  235.             print.log("✓ 使用默认坐标点击任务Tab");
  236.             找到任务Tab = true;
  237.         }
  238.     }
  239.     sleep.second(秒 = 3);

  240.     // ========================================
  241.     // 步骤3:使用opencv找图点击「看小说赚钱」
  242.     // ========================================
  243.     print.log("\n========== 步骤3:使用opencv找图识别「看小说赚钱」入口 ==========");
  244.    
  245.     var 找到看小说入口 = false;
  246.     var 尝试次数 = 0;
  247.     var 最大尝试次数 = 3;
  248.    
  249.     while (!找到看小说入口 && 尝试次数 < 最大尝试次数) {
  250.         尝试次数++;
  251.         print.log("第 " + 尝试次数 + " 次尝试找图识别");
  252.         
  253.         try {
  254.             var detects = opencv.findImagesEx('图色577630.cv');
  255.             
  256.             if (detects != null && detects.length > 0) {
  257.                 var 目标字符串 = "" + detects[0];
  258.                 print.log("✓ 找图成功,找到目标:" + 目标字符串);
  259.                
  260.                 var rectMatch = 目标字符串.match(/矩形区域:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
  261.                 if (rectMatch) {
  262.                     var x1 = parseFloat(rectMatch[1]);
  263.                     var y1 = parseFloat(rectMatch[2]);
  264.                     var x2 = parseFloat(rectMatch[3]);
  265.                     var y2 = parseFloat(rectMatch[4]);
  266.                     var cx = (x1 + x2) / 2;
  267.                     var cy = (y1 + y2) / 2;
  268.                     agent.clickPercent(cx, cy);
  269.                     print.log("✓ 已点击「看小说赚钱」,百分比坐标:(" + cx.toFixed(4) + ", " + cy.toFixed(4) + ")");
  270.                     找到看小说入口 = true;
  271.                 } else {
  272.                     print.log("⚠ 无法解析矩形区域坐标");
  273.                 }
  274.             } else {
  275.                 print.log("⚠ 未找到目标图片,尝试向上滑动");
  276.                 agent.swip(Math.floor(屏幕宽 * 0.5), Math.floor(屏幕高 * 0.8), Math.floor(屏幕宽 * 0.5), Math.floor(屏幕高 * 0.2), 500);
  277.                 sleep.second(秒 = 2);
  278.             }
  279.         } catch (e) {
  280.             print.log("⚠ 找图失败:" + e.message);
  281.             sleep.second(秒 = 1);
  282.         }
  283.     }
  284.    
  285.     if (!找到看小说入口) {
  286.         print.log("✗ 多次尝试未找到「看小说赚钱」入口,跳过本次循环");
  287.         continue;
  288.     }
  289.    
  290.     sleep.second(秒 = 3);

  291.     // ========================================
  292.     // 步骤4:进入小说页面后,通过UI解析点击第一本小说
  293.     // ========================================
  294.     print.log("\n========== 步骤4:选择小说开始阅读 ==========");
  295.    
  296.     var 找到小说 = false;
  297.     var 尝试次数4 = 0;
  298.     var 最大尝试次数4 = 3;
  299.    
  300.     while (!找到小说 && 尝试次数4 < 最大尝试次数4) {
  301.         尝试次数4++;
  302.         var 小说页面UI = 获取UI();
  303.         var xml长度4 = 字符串长度(小说页面UI);
  304.         
  305.         print.log("第 " + 尝试次数4 + " 次尝试获取小说页面UI,长度:" + xml长度4);
  306.         
  307.         if (xml长度4 < 100) {
  308.             print.log("UI数据过短,重试");
  309.             sleep.second(秒 = 1);
  310.             continue;
  311.         }
  312.         
  313.         var 排行榜节点 = 查找包含文字的节点(小说页面UI, ["排行榜", "免费小说"]);
  314.         
  315.         if (排行榜节点.length > 0) {
  316.             print.log("✓ 检测到小说页面,查找第一本小说");
  317.             var 小说列表 = 查找包含文字的节点(小说页面UI, ["热度", "阅读", "1.", "1 "]);
  318.             
  319.             if (小说列表.length > 0) {
  320.                 var 第一本小说 = 小说列表[0];
  321.                 var 小说X = (第一本小说.x1 + 第一本小说.x2) / 2 / 屏幕宽;
  322.                 var 小说Y = (第一本小说.y1 + 第一本小说.y2) / 2 / 屏幕高;
  323.                 agent.clickPercent(小说X, 小说Y);
  324.                 print.log("✓ 已点击第一本小说,百分比坐标:(" + 小说X.toFixed(4) + ", " + 小说Y.toFixed(4) + ")");
  325.                 找到小说 = true;
  326.             } else {
  327.                 agent.clickPercent(0.25, 0.45);
  328.                 print.log("✓ 未找到具体小说节点,使用默认坐标点击");
  329.                 找到小说 = true;
  330.             }
  331.         } else {
  332.             agent.clickPercent(0.25, 0.45);
  333.             print.log("✓ 未检测到排行榜,使用默认坐标点击");
  334.             找到小说 = true;
  335.         }
  336.     }
  337.    
  338.     sleep.second(秒 = 3);

  339.     // ========================================
  340.     // 步骤5:60秒倒计时阅读(自动翻页)
  341.     // ========================================
  342.     print.log("\n========== 步骤5:60秒倒计时阅读 ==========");
  343.     模拟阅读(60);

  344.     // ========================================
  345.     // 步骤6:关闭APP,准备重新启动
  346.     // ========================================
  347.     print.log("\n========== 步骤6:关闭APP ==========");
  348.     try {
  349.         agent.shell("am force-stop " + APP包名);
  350.         print.log("✓ 已关闭今日头条极速版");
  351.     } catch (e) {
  352.         print.log("⚠ 关闭APP失败:" + e.message);
  353.     }
  354.     sleep.second(秒 = 2);

  355.     print.log("本次循环完成");

  356.     // ========================================
  357.     // 循环间隔
  358.     // ========================================
  359.     if (循环次数 == 0 || 当前循环 < 循环次数) {
  360.         print.log("\n========== 等待下一次循环 ==========");
  361.         sleep.second(秒 = 5);
  362.     }
  363. }

  364. // ========================================
  365. // 结果汇总
  366. // ========================================
  367. print.timeEnd();
  368. print.log("\n======================================");
  369. print.log("===== 所有循环执行完成 =====");
  370. if (循环次数 > 0) {
  371.     print.log("总计执行:" + 循环次数 + " 次");
  372. } else {
  373.     print.log("无限循环模式,已执行:" + (当前循环 - 1) + " 次");
  374. }
  375. print.log("======================================");
复制代码



untoagent代理模式功能小结nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读了
    采集亚马逊正版群发工具有没有?
    Apr.20旅行X心语今天来说说YYPOST新功能的一个灵活用法,采集亚马逊商品信息,并且获得排名的软件,亚马逊现在越来越多客户做,淘宝的水是越来越清了,以前做电商的客户,现在都转战到外国,最赚钱的要数一些客户往亚马逊里堆了吧,拿我这个YYPOST的客户,最多的是采集,分析排名,刷价格,刷数量,改价,刷访问量等等技术

    企业发展B2B网站有什么东东软件可以发呢
    标题企业发展网B2B软件,现在虽然B2B网站收录不错,可愁的是心急的人们,他们太想一口吃撑胖子了,发帖宣传虽然不能像佛系那样淡定,但也不能像跑火车那般急躁对待,自己内容不收录,完全是自己操作内容问题,可以参考一下别人的内容是怎么弄的,然后自己要试着转变,而且收录这个内容,常常会变化的,不是一种规则就吃到老

    搜房天下房聊软件哪一个好呢
    本帖最后由 发帖软件 于 2019-5-22 16:15 编辑 2搜房天下群发房聊信息软件,开始本来打算做58同城的,但发一个就要一次点触验证码,这就让人没有感觉到存在的价值了吧,都是卖二手房和新房的搜房天下倒是可以发即时聊天信息,也没有发现他这个网站有啥子限制,登陆一个搜房天下账号,然后采集回来分类列表的网址,然后就一

    大家坛有没有好用的群发工具下载呢
    当你的笑容给我礼貌的招呼,大家坛全自动发帖软件,宣传推广是一场持久战,总是有一些人把软件用了一天,或是几个小时,就觉得自己付出太多了,那加进来的粉丝,或是流量,应该是和宣传多少成正比的,其实没有这么便宜的事,就像很多阅读量超过一百万的视频,或是电影,真正会在屏幕打赏的人不会超过三千,真正大额打赏给主

    群发正版软件中国塑料网
    中国塑料网群发软件YYPOST脚本下载地址,这个网站会有一个很奇怪的问题就是你在首页登陆无半个验证码,但在登陆网址登陆就会有一个验证码,所以我们灵活一些,在首页登陆就不用输入验证码了哈。网站秒收录比较高,但发的都是五金和建筑行业,先前有很多人都是发土建工程的大公司操作的,现在这个网站专为那个行业诞生的吧。

    OpenStreetMap网站正版2019年发帖工具下载
    本帖最后由 发帖软件 于 2019-5-21 11:13 编辑 OpenStreetMap网站全自动群发,OpenStreetMapOpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。有的人编辑地图然后等收录,有的人发日志等收录,我们这里也是利用地图日志做为宣传的目标,简单的脚本理

    搜房天下全自动收短信全自动识别验证码注册账号软件
    房天下自动注册机,这个脚本是前几天发房聊的脚本廷伸品种,这个脚本能做到自动注册账号,自动保存账号,自动发房聊的效果,不过今天我们主要说一说怎么注册账号写脚本吧,这个搜房天天下的账号,可以发提问,可以发房聊,发论坛,发博客,还有发个人中心页都是有秒收的效果的,这样就省去了去买号,去乱花钱的效果了吧,而

    企业邮箱安卓端有什么APP软件可以发的呢
    请输入标题企业邮箱安卓发发送邮箱脚本,这个脚本是利用企业邮箱进行群发的,全程是一种模拟手工操作的过程,所以封号是很少的,而且企业邮箱群发到普通QQ邮箱不容易进垃圾箱中的,所以这个脚本也是这样的原理,不过最好是利用一些多开器,登陆多点的QQ邮箱账号会比较流畅一些,然后用软件一个一个的切换APP进行群发邮件会

    头条留评论软件有没有好用的呢?
    今天整一个今日头条留言软件,对于留言YYPOST是优势是比较大的存在,因为他往往专注一些下拉定位的优点,像今日头条这样,还是需要一些特殊下拉定位的,因为他新闻有长有短,有图有视频的,所以综合起来定位是比较难的,如果用POST也不是很轻松可以破解他的加密参数。这个脚本也是有一个不好的地方就是换号会比较麻烦,您电

    单网页生成神器
    最近新技术,网页生成机占领了整个网络的半壁江山,效果很疯狂,虽然不知道能持续多久,作为开发软件的领头者,一直在找收录的方法,一直在努力创新着,一直被人模仿,却从没有被超越过,这个网页生成机,已经出来有一段时间了,一直没有拿出来分享,醉过醉过,它是利用的一些小小收录漏洞整的,您最好用一些老站域名,进行

关闭
快速回复 返回列表 返回顶部
本站自动发贴软件,是现在最流行的做脚本软件,这种发贴工具,不但发贴收录快,而且抢占好的先机,完全自由编辑,实现针对性群发模拟操作,软件可以顶贴,也可以发贴,可以兼容支持Discuz、PHPWind、Dvbbs三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖