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 國際許可協議進行許可。禁止使用此腳本發布任何教學視頻!!!

禁止使用此腳本發布任何教學視頻!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM