zoukankan      html  css  js  c++  java
  • 2021双十一自动刷淘宝喵糖Auto.js脚本(安卓适用)

    前作https://www.cnblogs.com/smileglaze/p/13854538.html,今年大头主要在浏览任务和自动投骰子上,较为省心。

    0.更新内容

    @_@常回来看看,可能会有bug修复和添加新功能

    • v1.11 11.08更新:
      • 优化:对部分任务进行了优化,并支持更多支付宝任务。

    • v1.1 10.30更新:
      • 优化:新增了控制是否自动投骰子的选项,现在默认关闭自动投骰子,设置在第16行。
      • 优化:悬浮窗默认位置上移。
      • 新增:增加了对"每日签到领喵糖(0/1)、逛逛天猫主会场(0/1)"任务的支持,增加了对淘宝所有浏览任务的支持。
      • 新增:增加了对支付宝的支持,现在可以从淘宝自动跳转支付宝签到并完成"浏览3个会场可得1个喵糖"任务,其他任务请手动完成。领取支付宝功能默认开启,如果想关闭,见代码第19行。
      v1.02 10.24更新:
      • 修复:修复了一个可能导致循环点击“已完成”任务的bug,建议更新。
      • 优化:将浏览15s任务的等待时间设在了第12行,默认为20s,如果觉得太久可以降低此参数。不建议设置低于18s,以应对网络波动。
      • 新增:增加了对"浏览天天领现金(0/1)"任务的支持。
    • v1.0 10.22更新:
      • 功能:自动完成淘宝双十一的喵糖任务中的浏览15s任务,并自动投骰子。

     1.开宗明义

    (小白请直接看第三部分内容)

    • 平台:Android
    • 功能:自动完成淘宝双十一的喵糖任务中的浏览15s任务,并自动投骰子
    • 特色:
      • 增加了程序运行时按下[音量下键][长按悬浮窗内文字]退出的功能,提供给想要主动退出的情况。(也可以在Auto.js中的管理栏目下找到正在运行的脚本)
      • 自带防锁屏功能,并在长期无操作时自动降低屏幕亮度。
      • 代码第16行控制是否自动投骰子。
      • 代码第19行控制是否打开支付宝,领取支付宝喵糖。
    • 依赖:Auto.js
    • 注意:
      • 脚本开启前需要保证淘宝开启,且处于喵糖活动的任务界面(可见“做任务赚喵糖”和一系列任务的界面),否则之后都会错误操作
      • 最近淘宝任务并不是连贯的浏览任务,中间会卡你一个“小游戏”任务,如果不完成不会显示剩余浏览任务,如遇此种情况,请手动完成后再执行脚本

    脚本代码如下https://wwe.lanzoui.com/b01npfw9g,下载后解压然后使用Auto.js的导入功能)

    如果您觉得文章对您有帮助,可以点击网页右侧边栏【打赏】一下。您的鼓励是博主的最大动力!
    /*---原载于https://www.cnblogs.com/smileglaze/p/15440620.html 仅供学习交流,下载后请于24小时内删除*/
    
    /*--------版本v1.11根据个人情况修改以下内容----------*/
    
    //长等待时间常量,用于应用启动、广告等较长时间等待,如果网络不好或手机卡请增加此数值,默认6秒
    var LONG_TIME = 6000;
    
    //短等待时间常量,用于例如返回等每步操作后的等待,如果手机卡请增加此数值,默认3秒
    var SHORT_TIME = 3000;
    
    //浏览15秒任务默认等待时间,默认20s,如果觉得等的时间太长可以减小此常量,单位为毫秒
    var WAITING_TIME = 20000;
    //var WAITING_TIME = 18000;
    
    //是否在领取结束后自动投骰子,默认否,但在需要自动投骰子的情况,可以开启此功能
    var AUTO_CAST = false;
    
    //是否领取支付宝喵糖,默认是。支付宝任务较少,可以手动完成
    var ALIPAY_FLAG = true;
    
    
    /*--------根据个人情况修改以上内容----------*/
    
    auto.waitFor();
    var height = device.height;
    var width = device.width;
    setScreenMetrics(width, height);
    
    //停掉除了本脚本以外的正在运行的脚本
    killOthersAlive();
    
    //启用悬浮窗,用于提示,为没有音量下键的手机提供了关闭悬浮窗可以直接停止脚本的方式
    var w = floaty.window(
        <frame gravity="left">
            <text id="text" textColor="black" bg='#ffffff'>★★★Tips:按下[音量-]键或者长按[悬浮窗内文字]可随时结束脚本</text>
        </frame>
    );
    //设置悬浮窗变量
    floatW();
    
    //启用按键监听,按下音量下键脚本结束
    keyDetector();
    
    //保持屏幕常亮,最多三十分钟
    device.keepScreenDim(30 * 60 * 1000);
    //开始刷喵糖
    lingQuTaobao();
    //lingQuZhifubao();
    
    //启用按键监听,按下音量下键脚本结束
    function keyDetector() {
        threads.start(function() { //在子进程中运行监听事件
            events.observeKey();
            events.on("key", function(code, event) {
                var keyCodeStr = event.keyCodeToString(code);
                console.log(code);
                console.log(keyCodeStr);
                if (keyCodeStr == "KEYCODE_VOLUME_DOWN") {
                    toast("检测到音量下键,程序已结束。");
                    //取消屏幕常亮
                    device.cancelKeepingAwake();
                    exit();
                }
            });
        });
    }
    
    function lingQuTaobao() {
        launchApp("淘宝");
        ui.run(function() {
            w.text.setText("★★★Tips:请手动打开淘宝喵糖活动[做任务赚喵糖]界面");
        });
        t = text("赚糖领红包").findOne(SHORT_TIME);
        if (t != null) {
            t.click();
            sleep(SHORT_TIME);
        }
        text("做任务赢奖励").waitFor();
        sleep(1000);
        ui.run(function() {
            w.text.setText("★★★Tips:按下[音量-]键或者长按[悬浮窗内文字]可随时结束脚本");
        });
        toast("赚喵糖");
        sleep(SHORT_TIME);
        if (text("每日签到领喵糖(0/1)").exists()) {
            t = text("每日签到领喵糖(0/1)").findOne().parent().parent().child(1);
            if (t.text() == "去完成") {
                toast("每日签到领喵糖");
                t.click();
                sleep(SHORT_TIME);
            }
        }
        if (text("逛逛天猫主会场(0/1)").exists()) {
            t = text("逛逛天猫主会场(0/1)").findOne().parent().parent().child(1);
            if (t.text() == "去完成") {
                toast("逛逛天猫主会场");
                t.click();
                sleep(SHORT_TIME);
                sleep(WAITING_TIME);
                back();
                sleep(SHORT_TIME + 1000);
                if (text("残忍离开").exists()) {
                    text("残忍离开").findOne().click();
                    sleep(SHORT_TIME);
                }
                if (!text("做任务赢奖励").exists()) {
                    back();
                    sleep(SHORT_TIME);
                }
            }
        }
        while (text("去浏览").exists()) {
            toast("存在去浏览");
            text("去浏览").findOne().click();
            sleep(SHORT_TIME);
            sleep(WAITING_TIME);
            back();
            sleep(SHORT_TIME + 1000);
            if (text("残忍离开").exists()) {
                text("残忍离开").findOne().click();
                sleep(SHORT_TIME);
            }
            if (!text("做任务赢奖励").exists()) {
                back();
                sleep(SHORT_TIME);
            }
        }
        while (text("浏览15s立得").exists()) {
            t = text("浏览15s立得").findOne().parent().parent().parent().child(1);
            if (t.text() == "去完成") {
                toast("存在浏览任务");
                t.click();
                sleep(SHORT_TIME);
                sleep(WAITING_TIME);
                back();
                sleep(SHORT_TIME + 1000);
                if (text("残忍离开").exists()) {
                    text("残忍离开").findOne().click();
                    sleep(SHORT_TIME);
                }
                if (!text("做任务赢奖励").exists()) {
                    back();
                    sleep(SHORT_TIME);
                }
            } else {
                break;
            }
        }
        while (text("浏览15秒立得").exists()) {
            t = text("浏览15秒立得").findOne().parent().parent().parent().child(1);
            if (t.text() == "去完成") {
                toast("存在浏览任务");
                if (t.parent().child(0).child(0).text() == "浏览天天领现金(0/1)") {
                    t.click();
                    sleep(SHORT_TIME);
                    if (text("打开链接").exists()) {
                        text("打开链接").findOne().click();
                        sleep(SHORT_TIME);
                    }
                } else {
                    t.click();
                    sleep(SHORT_TIME);
                }
                sleep(WAITING_TIME);
                back();
                sleep(SHORT_TIME + 1000);
                if (text("残忍离开").exists()) {
                    text("残忍离开").findOne().click();
                    sleep(SHORT_TIME);
                }
                if (!text("做任务赢奖励").exists()) {
                    back();
                    sleep(SHORT_TIME);
                }
            } else {
                break;
            }
        }
        if (ALIPAY_FLAG) {
            //领取支付宝喵糖
            sleep(SHORT_TIME);
            lingQuZhifubao();
        }
        toast("领取完成...");
        if (AUTO_CAST) {
            //自动投骰子
            text("关闭").findOne().click();
            sleep(SHORT_TIME);
            while (textContains("点击赢红包").exists()) {
                toast("自动投骰子");
                textContains("点击赢红包").findOne().click();
                sleep(5000);
            }
            text("关闭").findOne().click();
        }
        home();
        //刷支付宝喵糖
        toast("脚本结束^_^");
        //取消屏幕常亮
        device.cancelKeepingAwake();
        sleep(SHORT_TIME);
        exit();
    }
    
    function lingQuZhifubao() {
        toast("正在打开支付宝...");
        click(width / 2, height - 100);
        sleep(LONG_TIME);
        text("赚糖领红包").waitFor();
        text("赚糖领红包").findOne().click();
        //b=text("赚糖领红包").findOne().bounds();
        //click(b.centerX(), b.centerY());
        sleep(SHORT_TIME);
        if (text("签到得喵糖完成可获得1个喵糖,点击可以去完成").exists()) {
            text("签到得喵糖完成可获得1个喵糖,点击可以去完成").findOne().click();
            sleep(SHORT_TIME);
        }
        toast("已签到");
        while (className("android.widget.Button").textContains("逛一逛").textContains("可以去完成").exists()) {
            toast("存在逛一逛");
            className("android.widget.Button").textContains("逛一逛").textContains("可以去完成").findOne().click();
            sleep(SHORT_TIME);
            sleep(WAITING_TIME);
            back();
            sleep(SHORT_TIME + 1000);
            if (text("开心收下").exists()) {
                text("开心收下").findOne().click();
                sleep(SHORT_TIME);
            }
            if (!textContains("今日已签到").exists()) {
                back();
                sleep(SHORT_TIME);
                if (text("开心收下").exists()) {
                    text("开心收下").findOne().click();
                    sleep(SHORT_TIME);
                }
            }
        }
        text("关闭赚喵糖任务面板").findOne().click();
        sleep(SHORT_TIME);
        if (text("去逛逛").exists()) {
            text("去逛逛").findOne().click();
        } else {
            swipe(width / 2, height - 300, width / 2, 0, 800);
        }
        sleep(SHORT_TIME * 2);
        if (!textContains("今日喵糖已得,可继续浏览").exists()) {
            for (var i = 0; i < 3; i++) {
                j = 2 * i + 1;
                toast("逛逛会场(" + (i + 1).toString() + "/3)");
                textContains("点击可以去逛逛").findOnce(j).click();
                sleep(SHORT_TIME);
                sleep(WAITING_TIME);
                back();
                sleep(SHORT_TIME);
                if (!textContains("浏览3个会场可得1个喵糖").exists()) {
                    back();
                    sleep(SHORT_TIME);
                }
                if (text("开心收下").exists()) {
                    text("开心收下").findOne().click();
                    sleep(SHORT_TIME);
                    break;
                }
            }
        }
        swipe(width / 2, 100, width / 2, height - 200, 800);
        sleep(SHORT_TIME);
    }
    
    
    function floatW() {
        //悬浮窗不会自动关闭
        setInterval(() => {}, 1000);
        w.setPosition(0, height / 4);
        w.setSize(400, 300);
        //悬浮窗可调整大小
        w.setAdjustEnabled(true);
        //退出悬浮窗即结束脚本
        //w.exitOnClose();
        //长按悬浮窗内文字结束脚本
        w.text.longClick(() => {
            //取消屏幕常亮
            device.cancelKeepingAwake();
            toast("检测到长按悬浮窗文字,脚本终止");
            //try...catch把exit()函数的异常捕捉,则脚本不会立即停止,仍会运行几行后再停止
            try {
                exit();
            } catch (err) {}
            //直接exit()的话坚持不到return的时候
            return true;
        });
    }
    
    function killOthersAlive() {
        //获取全部正在运行的脚本引擎
        var allEngines = engines.all();
        //log(allEngines);
        for (var i = 0; i < allEngines.length; i++) {
            //停掉除了本脚本以外的正在运行的脚本
            if (allEngines[i] != engines.myEngine()) {
                allEngines[i].forceStop();
            }
        }
    }
    

     2.Auto.js的使用方法

    简单说,Auto.js是一个手机的APP,不需要root权限就能运行自己写的JS脚本。

    • 安装AutoJS(可以在此下载https://wwe.lanzoui.com/izzrahmeilc,验证密码1234)
    • 在手机上安装并打开Auto.js,会提示打开辅助功能(各个手机叫法不同,比如三星叫服务,魅族叫无障碍服务)。
    关于无障碍功能的开启,各个手机可能不同,但大致是一样的,以MIUI为例,入口在:设置 - 更多设置 - 无障碍 - 已下载的服务 - Auto.js - 开启服务
    • 给Auto.js开启 "显示悬浮窗" 权限,否则无法启动悬浮窗提示!!!(开启方法:长按Auto.js,打开应用信息 - 权限管理,确认“显示悬浮窗”权限开启)
    • 打开Auto.js,点击右下角"+"号,(在这里选择“导入”可以导入前面下载的压缩文件解压后的js脚本)选择“文件”可以创建新的脚本,随便起个名字,点“确定”,然后把这个博客上面的代码完整复制进去,点右上角保存的图标
    • 关闭键盘,点右上角的小三角▶运行程序
    • 等待程序运行,超过15s没反应才是不正常的。(建议锁屏时间设置为30s及以上)

    3.写给小白

    1. 把链接https://wws.lanzous.com/b01npfw9g的两个文件都下载了(记得自己的下载位置)
    2. 把apk文件安装
    3. 把zip文件解压了,得到js文件(记得解压位置)
    4. 看上面第点“Auto.js的使用方法”中,按照上面写的方法给设置 无障碍显示悬浮窗 权限(如果没有权限也会提示你开启)
    5. 打开Auto.js,点击右下角的+号,选第一个导入脚本,脚本就是第3步你解压的js文件
    6. 脚本开启前需要保证淘宝开启,且处于喵糖活动的任务界面(可见“做任务赚喵糖”和一系列任务的界面),在Auto.js点击三角号▶运行脚本(首次运行脚本可能会提示是否允许Auto.js打开淘宝,手动点击确认,按[音量-键]结束,并重新运行脚本即可)
    7. 如果遇到瞎点的情况,请立即按下手机的[音量-]键[长按悬浮窗内文字]停止程序,你也可以在Auto.js的主页-管理中找到正在运行的脚本,点击×关掉它
    8. 如果出错请告诉我具体执行到哪个阶段。

     4.Q&A

    • Q:我觉得脚本运行的每步操作等的太久了,有点憨憨

    A:稳定性比效率更重要,这是为了照顾老年机和山区的同志,你可以自行修改代码第6、9、12行的时间常量,设置小一些。

    如果等待时间过短,会出现未加载成功就进行判定和点击操作,从而导致错误的逻辑。

    相对的如果你的手机太卡,或者网络不佳,可以增大这两个时间常量(需要设置手机锁屏时间不要过短,否则会锁屏)。


     5.注意事项

    • 测试环境是安卓11版本,运行可能需要安卓7版本以上,适合1080p分辨率的全面屏手机
    • 程序并没有测试所有情况,可能会遇到一些偶然弹窗影响进程,一般手动处理后,关掉脚本和淘宝,重新运行即可
    • 每天可以通过任务界面最下面的淘宝和支付宝互相打开的按钮领取1个喵糖,一次性的,请手动完成
    • 每天除了浏览任务,还有种类比较多的“去完成”任务,目前还在搜集数据中,以后可能会更新这些任务
    • 累计任务奖励需要手动领取
    • 程序的的唤起如果失败,需要注意是否禁止了被其他程序启动
    • 这是一个脚本的想法和验证,仅供学习交流,下载体验后,请24小时内删除!!!
    • 非商业性使用 — 不得将此项目及其衍生的项目的源代码和二进制产品用于任何商业和盈利用途
    • License:知识共享许可协议
      本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。禁止使用此脚本发布任何教学视频!!!

    禁止使用此脚本发布任何教学视频!!!

  • 相关阅读:
    Packet for query is too large (1986748 > 1048576). You can change this value on the server by 异常
    解决springdatajpa插入大量数据速度慢的问题
    thymeleaf onclick方法向js方法传递参数
    git的使用(扫盲)
    【错误总结】Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.
    SpringBoot集成Swagger(Swagger的使用),生成接口文档,方便前后端分离开发
    spring中后台接收参数总结
    PTA 03-树3 Tree Traversals Again (25分)
    PTA 03-树2 List Leaves (25分)
    PTA 03-树1 树的同构 (25分)
  • 原文地址:https://www.cnblogs.com/smileglaze/p/15440620.html
Copyright © 2011-2022 走看看