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("無[逛一逛]任務\n結束支付寶,等待打開淘寶...");
        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,嘗試了各種方法,原來問題出在權限不夠,感謝這位老哥


免責聲明!

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



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