zoukankan      html  css  js  c++  java
  • 2020双十一自动刷淘宝&支付宝喵币Auto.js脚本(安卓适用)

    参考https://www.52pojie.cn/thread-1287906-1-1.html修改的程序,丰富了很多功能

    0.更新内容

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

    • v1.27 11.6更新:
      • 支付宝现在首页上方的窗口加载很慢,对应修改了支付宝活动入口的进入判断。
      • 如果领取模式为MODE=1(只领取支付宝),在领完支付宝之后会根据设置进行扁猫猫功能。
      • 现在默认领取模式为MODE=1(只领取支付宝),并且扁猫猫功能默认开启了。主要是考虑到使用脚本领取淘宝也挣不到几个喵币,如果仍然有需求,请自行修改代码第13行和23行。
      • 由于支付宝默认进去之后就打开任务界面,之前的脚本会漏掉领取钱袋子的操作,现在在每次支付宝领取结束后增加了领取钱袋子的操作。

    • v1.26 11.4更新:
      • 支付宝活动页进去之后变成了自动弹出赚喵币界面,导致之前的脚本进去之后找不到赚喵币按钮而停着不动,对应加了个判断
      • 针对支付宝的活动入口做了判断,分为上面存在入口和下面存在入口两种情况,解决支付宝首页频繁变动带来的活动入口找不到的情况
      • 重要:由于最新版的淘宝会检测是否开启了无障碍功能,检测到开启后活动奖励都降为正常的1/10,所以部分用户可能想要仅自动刷支付宝的喵币。对应新增自选脚本领取模式的功能,通过修改脚本第26行的MODE值,运行三种模式:
        • 0:支付宝淘宝均领取,1:只领取支付宝,2:只领取淘宝,其他:都不领取
    • v1.25 11.1更新:
      • 更新了支付宝淘宝的活动入口,基本就是这两种格局
    • v1.24 10.29更新:
      • 日常更新,淘宝支付宝每天首页基本都在变,今天已适配,但不能保证及时更新。遇到停在首页不动请手动进入活动页,每天7点后第一次进入活动页可能会出现停住没反应的情况,需要手动领一下猫旁边的钱袋子即可。
      • 支付宝和淘宝内任务更新。
      • 支付宝逛一逛时间延长到18秒。
    • v1.23 10.27更新:
      • 淘宝的猫猫可能会出走,需要手动寻找一下
      • 修复了浇水bug
    • v1.22 10.26更新:
      • 支付宝的活动页位置调整了,相应进行了更新
      • 亮屏设置了最长时间为30分钟
      • 通过后台css给更新内容加了个折叠文字的功能,是不是看着方便多了?(√)
    • v1.21 10.25更新:
      • 启用支付宝内活动页完成[施肥]和[浇水]任务功能,但是此任务随缘,可能要主动[缓一缓],遇到才能做
      • 优化了支付宝领流程的等待时间
      • 修复了每日7点领取喵币时卡住的问题,之前版本每天7点后第一次进入活动页会停滞无操作,需要手动领取喵币钱袋子
      • 稳定性、提示文字更新
    • v1.2 10.24更新:
      • 活动页的“赚喵币”的位置又发生了变化,文字也改成了“领喵币”。新版本不依赖位置,已经能很好地处理此情况
      • 优化了点击猫旁边的钱袋子的逻辑,理论上一直都能点对,鲁棒性大大加强。
      • 悬浮窗位置下移了一点,防止挡住部分关键操作点击的文字
      • 悬浮窗会在适当的时候提示下一步操作(提醒手动打开主页),后续会进一步丰富提醒流程
      • 开启脚本后会启用保持屏幕常亮的功能,关闭脚本后取消屏幕常亮。为了实现这个功能,对之前版本的“关闭悬浮窗即结束脚本”的功能做了调整,目前改为“长按悬浮窗内文字则立即结束脚本”
      • 重大提速:优化了很多地方的等待时间,比如会自动判断首页加载完成了,领钱袋优化成了光速,等等
      • 写好了在支付宝中完成“浇水”和“施肥”任务的逻辑,目前在代码中注释掉了,等待之后测试。等不及的小伙伴可以自行取消注释体验。
    • v1.14
      • 淘宝主页更新,活动页位置发生变化,对应进行了修改。后续更新会换一个方式进入淘宝活动页。
      • 温馨提示:使用脚本刷喵币获得的只有手动完成任务的1/10奖励,根据活动描述文本中“完成任务最高可获xxx喵币”来看,阿里官方应该是认可了脚本自助刷喵币的行为为正常参与,只是你获得不了最高奖励。
    • v1.13 
      • Bug修正:修复了扁猫猫功能点击错误的问题
    • v1.12
      • 在程序运行最开始的时候关闭其他正在运行的脚本,方便小白选手不知道自己后台还在运行脚本。
      • 优化了点击“赚喵币”的坐标位置
    • v1.11
      • Bug修正:修复了"赚喵币"点击错误的问题
    • v1.1
      • 重大更新:增加了悬浮窗功能,悬浮窗用于提示程序的关闭方式
      • 针对没有[音量-]物理按键的手机,增加了通过关闭悬浮窗来关闭脚本的功能(已于1.2版本改为“长按悬浮窗内文字则立即结束脚本”
      • 针对特别长的全面屏手机,简单拟合了一下屏幕尺寸与点击“赚喵币”的坐标之间的函数关系
      • 重要:针对偶发的无法开启淘宝的情况,增加了检测机制,如果没有发现淘宝首页的[今日爆款]或[天猫超市],即提醒手动打开淘宝首页
      • 无法自动开启淘宝的话,请检查自己的Auto.js的权限“后台弹出界面”或者“在其他应用的上层显示(华为手机)”是否开启
    • v1.0
      • 增加了一些偶然事件的处理方式
      • 自适应优化

     1.开宗明义

    (小白请看第四部分内容)

    • 平台:Android
    • 功能:双十一自动刷淘宝和支付宝的喵币
    • 特色:
      • 支付宝的喵币刷完后自动刷淘宝的喵币
      • 增加了狂扁活动界面的猫,获得蚊子腿喵币的功能(默认开启,关闭方法为:把代码第13行的true改为false)
      • 增加了程序运行时按下[音量下键][长按悬浮窗内文字]退出的功能,提供给想要主动退出的情况(尤其是狂扁猫猫的阶段,默认持续20s)。(也可以在Auto.js中的管理栏目下找到正在运行的脚本)
      • 代码最开始提供了自定义的内容,可以根据自己的屏幕大小进行修改适配
    • 依赖:Auto.js
    • 注意:脚本开启前需要保证淘宝和支付宝未开启,或者处于淘宝和支付宝均处于首页,否则之后都会错误操作

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

    /*---原载于https://www.cnblogs.com/smileglaze/p/13854538.html 仅供学习交流,下载后请于24小时内删除*/
    
    /*--------版本v1.27根据个人情况修改以下内容----------*/
    
    //长等待时间常量,用于应用启动、广告等较长时间等待,如果网络不好或手机卡请增加此数值,默认8秒
    var LONG_TIME = 8000;
    
    //短等待时间常量,用于例如返回等每步操作后的等待,如果手机卡请增加此数值
    var SHORT_TIME = 3000;
    
    //是否开启点(扁)猫猫获取蚊子腿喵币功能,默认开启。
    //可选值:   true:开启;false:关闭
    var TAP_FLAG = true;
    
    //点击猫的间隔时间,默认是100毫秒
    var TAP_INTERVAL = 100;
    
    //点击猫的持续次数,默认是200次
    var TAP_TIMES = 200;
    
    //领取模式切换,默认为只领取支付宝。
    //可选值:   0:支付宝淘宝均领取,1:只领取支付宝,2:只领取淘宝,其他:都不领取
    var MODE = 1;
    
    /*--------根据个人情况修改以上内容----------*/
    
    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();
    
    //开始刷喵币
    switch (MODE) {
        case 0:
    
            //保持屏幕常亮,最多三十分钟
            device.keepScreenDim(30 * 60 * 1000);
            lingQuZhifubao();
        case 1:
    
            //保持屏幕常亮,最多三十分钟
            device.keepScreenDim(30 * 60 * 1000);
            lingQuZhifubao();
        case 2:
    
            //保持屏幕常亮,最多三十分钟
            device.keepScreenDim(30 * 60 * 1000);
            lingQuTaobao();
        default:
            toast("脚本26行MODE非有效值,脚本结束^_^")
            sleep(SHORT_TIME);
            exit();
    }
    
    //启用按键监听,按下音量下键脚本结束
    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() {
        app.startActivity({
            packageName: "com.taobao.taobao",
            className: "com.taobao.tao.TBMainActivity"
        });
        ui.run(function() {
            w.text.setText("★★★Tips:若长时间无反应请手动打开淘宝首页");
        });
        text("今日爆款").waitFor();
        //text("天猫超市").waitFor();
        sleep(1000);
        ui.run(function() {
            w.text.setText("★★★Tips:按下[音量-]键或者长按[悬浮窗内文字]可随时结束脚本");
        });
        //点击“疯抢红包”进入活动页
        id("rv_main_container").findOne().child(4).child(0).child(0).click();
        //click(width / 2 + 200, TAOBAO_Y);
        toast("进入活动页");
        //sleep(LONG_TIME);
        className("android.widget.Button").text("我的猫,点击撸猫").findOne(LONG_TIME);
        //偶发的去农场领猫事件
        if (text("亲爱的主人我去芭芭农场玩耍了快来找我回家吧~").exists()) {
            ui.run(function() {
                w.text.setText("★★★猫跑去芭芭农场了,请手动完成任务后返回活动主页");
            });
            className("android.widget.Button").text("我的猫,点击撸猫").waitFor();
            ui.run(function() {
                w.text.setText("★★★Tips:按下[音量-]键或者长按[悬浮窗内文字]可随时结束脚本");
            });
        }
        //检测彩蛋
        if (text("获得一个待开奖的彩蛋").exists()) {
            text("好的,11月11日见").findOne().click();
            toast("领取彩蛋成功");
            sleep(SHORT_TIME);
        }
        //点击猫旁边的钱袋子
        //click(PURSE_X, PURSE_Y);
        //className("android.widget.Button").textContains("7点可领").findOne().click();
        if (className("android.widget.Button").textContains("点击领取").exists()) {
            className("android.widget.Button").textContains("点击领取").findOne().click();
            text("去喂猫 赚更多喵币").waitFor();
            text("去喂猫 赚更多喵币").findOne().click();
            sleep(SHORT_TIME);
        }
        //sleep(SHORT_TIME * 2);
        //点击赚喵币进入任务页
        //click(ZHUAN_X, ZHUAN_Y - 100);
        className("android.widget.Button").text("赚喵币").findOne().click()
        toast("赚喵币");
        sleep(SHORT_TIME * 2);
        if (text("签到").exists()) {
            text("签到").findOne().click();
            sleep(SHORT_TIME);
            toast("签到成功");
            sleep(2000);
        }
        while (text("去浏览").exists()) {
            toast("存在去浏览");
            text("去浏览").findOne().click();
            sleep(1500);
            swipe(width / 2, height - 500, width / 2, 0, 500);
            sleep(2500);
            swipe(width / 2, height - 500, width / 2, 0, 500);
            sleep(10000);
            swipe(width / 2, height - 500, width / 2, 0, 500);
            sleep(8000);
            back();
            sleep(SHORT_TIME + 1000);
            if (!text("累计任务奖励").exists()) {
                back();
                sleep(SHORT_TIME);
            }
        }
        if (textContains("邀请好友一起撸猫").exists()) {
            //任务中有邀请任务,无法自动完成,跳过这个任务
            toast("有邀请任务");
            while (text("去完成").exists()) {
                //寻找并点击第二个“去完成”
                var tmp = text("去完成").findOnce(1);
                if (tmp == null) {
                    //找不到第二个任务了,结束循环
                    break;
                }
                toast("存在新任务");
                tmp.click();
                sleep(2500);
                swipe(width / 2, height - 600, width / 2, 0, 500);
                sleep(3500);
                swipe(width / 2, height - 600, width / 2, 0, 500);
                sleep(10000);
                swipe(width / 2, height - 600, width / 2, 0, 500);
                sleep(9000);
                back();
                sleep(SHORT_TIME + 1000);
            }
        } else {
            toast("无邀请任务");
            while (text("去完成").exists()) {
                toast("存在新任务");
                text("去完成").findOne().click();
                sleep(2500);
                swipe(width / 2, height - 600, width / 2, 0, 500);
                sleep(3500);
                swipe(width / 2, height - 600, width / 2, 0, 500);
                sleep(10000);
                swipe(width / 2, height - 600, width / 2, 0, 500);
                sleep(9000);
                back();
                sleep(SHORT_TIME + 1000);
            }
        }
        while (text("去搜索").exists()) {
            toast("存在去搜索");
            text("去搜索").findOne().click();
            sleep(1500);
            swipe(width / 2, height - 500, width / 2, 0, 500);
            sleep(2500);
            swipe(width / 2, height - 500, width / 2, 0, 500);
            sleep(10000);
            swipe(width / 2, height - 500, width / 2, 0, 500);
            sleep(8000);
            back();
            sleep(SHORT_TIME + 1000);
        }
        while (text("去逛逛").exists()) {
            toast("存在去逛逛");
            text("去逛逛").findOne().click();
            sleep(1500);
            swipe(width / 2, height - 500, width / 2, 0, 500);
            sleep(2500);
            swipe(width / 2, height - 500, width / 2, 0, 500);
            sleep(10000);
            swipe(width / 2, height - 500, width / 2, 0, 500);
            sleep(8000);
            back();
            sleep(SHORT_TIME + 1000);
        }
        toast("领取完成...");
        if (TAP_FLAG) {
            back();
            sleep(SHORT_TIME + 1000);
            //点击“疯抢红包”进入活动页
            id("rv_main_container").findOne().child(4).child(0).child(0).click();
            //click(width / 2 + 200, TAOBAO_Y);
            //开始扁猫功能
            taptap();
        }
        home();
        //刷支付宝喵币
        toast("脚本结束^_^");
        //取消屏幕常亮
        device.cancelKeepingAwake();
        sleep(SHORT_TIME);
        exit();
    }
    
    function lingQuZhifubao() {
        //toast("正在打开支付宝...");
        app.startActivity({
            packageName: "com.eg.android.AlipayGphone",
            className: "com.eg.android.AlipayGphone.AlipayLogin"
        });
        //waitForActivity("com.eg.android.AlipayGphone.AlipayLogin");
        //sleep(LONG_TIME);
        ui.run(function() {
            w.text.setText("★★★Tips:若长时间无反应请手动打开支付宝首页");
        });
        text("扫一扫").waitFor();
        //text("付钱/收钱").waitFor();
        //sleep(SHORT_TIME);
        sleep(2000);
        ui.run(function() {
            w.text.setText("★★★如等待较长请手动进入支付宝活动页");
        });
        //点击进入活动页,控件的clickable为false,需要点击坐标
        var target=className("android.widget.RelativeLayout").idContains("home_adbannerview").findOne(SHORT_TIME);
        if (target==null) {
            //toast(1);
            target = className("android.widget.FrameLayout").descContains("双11狂欢节").findOne(2000);
            //有时候两个按钮的desc都是双11,要判断一下右边那个
            if (target.bounds().right < (width / 2)) {
                target = className("android.widget.FrameLayout").desc("双11狂欢节").findOnce(1);
            }
            // toast(target.bounds());
            //下面是点击靠下入口的位置
            click(target.bounds().centerX(), target.bounds().centerY());
            //toast(target.bounds());
        } else {
            //log(idContains("home_adbannerview").findOne(2000));
            //toast(2);
            //10月26日后修改了活动页位置
            target = descContains("双11来了,瓜分20亿红包").findOne(2000);
            if (target != null) {
                //toast(3);
                click(parseInt(width / 2), target.bounds().bottom - 100);
            } else {
                //toast(4);
                target = idContains("home_grid_notice_container").findOne();
                //寻找按键下方的grid的位置,往上数100个像素就是要点击的纵坐标
                //点击“马上领取”进入活动页
                click(parseInt(width / 2), target.bounds().top - 100);
            }
        }
        /*
        if (className("android.widget.Button").text("我的猫,点击撸猫").findOne(2000) == null) {
            click(parseInt(width / 2), target.top - 100);
        }*/
        //sleep(LONG_TIME);
        textContains("我的猫,点击撸猫").waitFor();
        sleep(1000);
        //检测彩蛋
        ui.run(function() {
            w.text.setText("★★★Tips:按下[音量-]键或者长按[悬浮窗内文字]可随时结束脚本");
        });
        if (text("获得一个待开奖的彩蛋").exists()) {
            text("好的,11月11日见").findOne().click();
            toast("领取彩蛋成功");
            sleep(SHORT_TIME);
        }
        //点击猫旁边的钱袋子
        //click(PURSE_X, PURSE_Y);
        if (className("android.widget.Button").textContains("点击领取").exists()) {
            className("android.widget.Button").textContains("点击领取").findOne().click();
            text("去喂猫 赚更多喵币").waitFor();
            text("去喂猫 赚更多喵币").findOne().click();
            sleep(SHORT_TIME);
        } //点击赚喵币进入任务页
        //click(ZHUAN_X, ZHUAN_Y - 100);
        toast("赚喵币");
        if (className("android.widget.Button").text("赚喵币").exists()) {
            className("android.widget.Button").text("赚喵币").findOne().click();
            sleep(SHORT_TIME * 2);
        }
        if (text("签到").exists()) {
            text("签到").findOne().click();
            sleep(SHORT_TIME);
            toast("签到成功");
            sleep(2000);
        }
        while (text("逛一逛").exists()) {
            toast("存在逛一逛");
            text("逛一逛").findOne().click();
            sleep(18000);
            back();
            sleep(SHORT_TIME + 1000);
            if (text("好的,我知道了").exists()) {
                text("好的,我知道了").findOne().click();
                sleep(SHORT_TIME);
            }
            if (text("残忍离开").exists()) {
                text("残忍离开").findOne().click();
                sleep(SHORT_TIME);
            }
        }
        //支付宝的“去完成”任务差异较大,其他任务需手动完成
        //施肥任务
        if (text("去芭芭农场施肥一次").exists()) {
            text("去芭芭农场施肥一次").findOne().parent().child(3).click();
            ui.run(function() {
                w.text.setText("★★★正在运行[去芭芭农场施肥一次]任务,如等待较长请手动操作完成");
            });
            sleep(SHORT_TIME);
            //点击“集肥料
            target = className("android.widget.Image").idContains("game").findOne().parent().parent().parent().parent().child(3);
            target.click();
            //点击“去签到”
            var t = text("去签到").findOne(3000);
            if (t != null) {
                t.click();
            } else {
                toast("未找到[去签到],如肥料不够请手动获取");
            }
            //关闭任务界面
            className("android.widget.Image").idContains("game").findOne().parent().parent().parent().parent().parent().child(3).child(0).child(1).click();
            sleep(1000);
            //领取当日肥料
            target = className("android.widget.Image").idContains("game").findOne().bounds();
            click(target.centerX() + 230, target.centerY() + target.height() * 0.09);
            t = text("去施肥").findOne(1000);
            if (t != null) {
                t.click();
            }
            //点击施肥
            sleep(1000);
            target = className("android.widget.Image").idContains("game").findOne().parent().parent().parent().parent().child(3);
            click(width / 2, target.bounds().centerY());
            back();
            text("好的,我知道了").findOne().click();
            ui.run(function() {
                w.text.setText("★★★Tips:按下[音量-]键或者长按[悬浮窗内文字]可随时结束脚本");
            });
            sleep(SHORT_TIME);
        }
        //浇水任务
        if (text("去蚂蚁森林给好友浇水").exists()) {
            ui.run(function() {
                w.text.setText("★★★正在运行[浇水]任务,如浇水上限/等待较长请手动操作完成");
            });
            text("去蚂蚁森林给好友浇水").findOne().parent().child(3).click();
            text("种树").waitFor();
            swipe(width / 2, height - 300, width / 2, 0, 500);
            //点击排行榜第一
            //sleep(1000);
            toast(text("总排行榜").findOne().parent().parent().child(12).child(0).bounds());
            text("总排行榜").findOne().parent().parent().child(12).child(0).click();
            textEndsWith("的蚂蚁森林").waitFor();
            sleep(1000);
            target = idContains("J_tree_dialog_wrap").findOne().bounds();
            //点击浇水
            click(target.centerX() - 50, target.bottom - 50);
            className("android.widget.Button").text("浇水送祝福").findOne().click();
            sleep(1000)
            back();
            sleep(2000);
            back();
            text("好的,我知道了").findOne().click();
        }
        //点击猫旁边的钱袋子
        //click(PURSE_X, PURSE_Y);
        if (className("android.widget.Button").textContains("关闭任务弹窗").exists()){
            className("android.widget.Button").textContains("关闭任务弹窗").findOne().click();
            sleep(500);
            }
        if (className("android.widget.Button").textContains("点击领取").exists()) {
            className("android.widget.Button").textContains("点击领取").findOne().click();
            text("去喂猫 赚更多喵币").waitFor();
            text("去喂猫 赚更多喵币").findOne().click();
        }
        //home();
        //sleep(SHORT_TIME);
        //淘宝领取
        if (MODE == 1) {
            if (TAP_FLAG){
                toast("开始扁猫猫");
                taptap();
                }
            toast("无[逛一逛]任务,脚本结束^_^");
            //取消屏幕常亮
            device.cancelKeepingAwake();
            sleep(SHORT_TIME);
            exit();
        } else {
            toast("无[逛一逛]任务
    结束支付宝,等待打开淘宝...");
            lingQuTaobao();
        }
    }
    
    function taptap() {
        //扁猫猫可以获得额外的蚊子腿喵币
        toast("开始狂扁猫猫功能");
        className("android.widget.Button").text("我的猫,点击撸猫").waitFor();
        for (var i = 0; i < TAP_TIMES; i++) {
            //点击中心位置
            click(parseInt(width / 2), parseInt(height / 2));
            sleep(TAP_INTERVAL);
        }
        toast("扁猫结束");
    }
    
    function floatW() {
        //悬浮窗不会自动关闭
        setInterval(() => {}, 1000);
        w.setPosition(0, height - 800);
        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://wws.lanzous.com/b01npfw9g,验证密码1234)
    • 在手机上安装并打开Auto.js,会提示打开辅助功能(各个手机叫法不同,比如三星叫服务,魅族叫无障碍服务)。
    关于无障碍功能的开启,各个手机可能不同,但大致是一样的,以MIUI为例,入口在:设置 - 更多设置 - 无障碍 - 已下载的服务 - Auto.js - 开启服务
    •  给Auto.js开启 "后台弹出界面" 权限,否则无法启动第二个app!!!(开启方法:长按Auto.js,打开应用信息 - 权限设置,确认“后台弹出界面”权限开启,见下图)

      (华为手机找不到这个权限:设置〉应用管理〉设置〉特殊访问权限〉在其他应用的上层显示〉auto.js)

        

    • 打开Auto.js,点击右下角"+"号,(在这里选择“导入”可以导入前面下载的js脚本)选择“文件”可以创建新的脚本,随便起个名字,点“确定”,然后把这个博客上面的代码完整复制进去,点右上角保存的图标
    • 关闭键盘,点右上角的小三角运行程序
    • 等待程序运行,超过15s没反应才是不正常的。(建议锁屏时间设置为30s及以上)

    附加题:Auto.js有自动定时运行脚本的功能,你可以设置这个脚本在每天早上你还没醒的时候自动运行刷喵币,可以参考如下:

    点击脚本右边的菜单按钮->更多->定时任务即可定时运行脚本,但是必须保持Auto.js后台运行(自启动白名单、电源管理白名单等)。同时,可以在脚本的开头使用device.wakeUp()来唤醒屏幕;但是,Auto.js没有解锁屏幕的功能,因此难以在有锁屏密码的设备上达到效果。


     3.安卓手机获取点击屏幕坐标的方法

    • 确认开启开发者模式

    如何打开开发者模式请参考https://baijiahao.baidu.com/s?id=1595634582987842609

    • 进入开发者选项
      • 入口一般是:“设置”-“更多设置”-“开发者选项”
      • 往下滑,找到“指针位置”功能并打开,之后的点击操作都会在屏幕上方显示坐标,屏幕上的细线不是屏幕坏了,是记录了你的滑动轨迹
      • 通过这个功能,手动进行打开淘宝进入活动界面刷喵币等操作,根据屏幕上方显示的坐标修改代码最前面对应操作的坐标,使得自动点击操作能够适配你的手机屏幕

        


    4.写给小白

    1. 把链接的两个文件都下载了(记得自己的下载位置)
    2. 把apk文件安装
    3. 把zip文件解压了,得到js文件(记得解压位置)
    4. 看上面第二点“Auto.js的使用方法”中,按照上面写的方法给设置 无障碍后台显示 权限
    5. 打开Auto.js,点击右下角的+号,选第一个导入脚本,脚本就是第3步你解压的js文件
    6. 确保淘宝和支付宝未开启,或者在首页,打开手机GPS定位,在Auto.js点击三角号运行脚本(首次运行脚本可能会提示是否允许Auto.js打开支付宝/淘宝,手动点击确认,按[音量-键]结束,并重新运行脚本即可)
    7. 如果遇到瞎点的情况,请立即按下手机的[音量-]键停止程序,你也可以在Auto.js的主页-管理中找到正在运行的脚本,点击×关掉它
    8. 如果出错请告诉我具体执行到哪个阶段。

    5.写给进阶玩家

    • 在上面的小白的基础上,可以自己纠错
    • 比如通过第三点安卓手机获取点击屏幕坐标的方法让脚本运行时显示每次点击的具体坐标,然后修改代码最开头的常量,对自己的手机进行适配
    • 通过Auto.js给脚本设置自动运行时间,每天睡觉的时候自动刷
    • 想改啥改啥,注释写的很详细了

    Auto.js官方文档

    https://hyb1996.github.io/AutoJs-Docs/#/


     6.Q&A

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

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

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

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

    • Q:进入活动页后没有点“赚喵币”/没有进入“赚喵币”的任务界面,直接提示“无[逛一逛]任务”就结束支付宝领取流程

    A:问题出在1.0版本的一个BUG,已于1.11之后的版本修复

    • Q:开启扁猫猫功能后出现“TABAO_X未定义”的情况

    A:问题出在1.12版本的一个BUG,已于1.13之后的版本修复


     7.注意事项

    • 测试环境是安卓10版本,运行可能需要安卓7版本以上,适合1080p分辨率的全面屏手机
    • 程序并没有测试所有情况,可能会遇到一些偶然弹窗影响进程,一般手动处理后,关掉脚本和淘宝支付宝,重新运行即可
    • 每天可以通过任务界面最下面的淘宝和支付宝互相打开的按钮领取10万喵币,一次性的,请手动完成
    • 累计任务奖励需要手动领取
    • 喂猫升级需要自己操作
    • 程序的的唤起如果失败,需要注意是否禁止了被其他程序启动
    • 由于只在我自己的小米8上进行了测试,屏幕尺寸1080*2248,针对不同设备可能需要手动调整代码最开始的常量,如果你的某一步点击操作失败,请自行调整代码最前面的常量以适配你的屏幕
    • 这是一个脚本的想法和验证,仅供学习交流,下载体验后,请24小时内删除!!!
    • 非商业性使用 — 不得将此项目及其衍生的项目的源代码和二进制产品用于任何商业和盈利用途
    • License:本项目使用CC-BY-NC-SA授权,但禁止使用此脚本发布任何教学视频!!!

    吐槽:主要的坑在于连续启动两个app,尝试了各种方法,原来问题出在权限不够,感谢这位老哥

  • 相关阅读:
    博客园修改 markdown 编辑器代码高亮样式、字体、字体大小等
    Ubuntu 安装 Insomnia
    Golang 中的反向代理(ReverseProxy) 介绍与使用
    Ubuntu 安装 httpserver
    Golang net/http 标准库原理解读与源码分析
    博客园 markdown 编辑器中代码缩进间距很大的解决方法
    git fetch 的作用与原理
    JetBrains IDE 中代码使用空格缩进,设置Tab键为4个空格
    packmol建模流程计算
    Leaflet中使用Leaflet.fullscreen插件实现全屏效果
  • 原文地址:https://www.cnblogs.com/smileglaze/p/13854538.html
Copyright © 2011-2022 走看看