推薦一款好用且能兼職賺錢的自動化工具 - Hamibot

1. 前言

大家好,我是安果!

最近發現一款神器「 Hamibot 」,它是一款 Android 端的自動化工具,它基於 AutoJS 源碼進行的二次開發

官方網站:https://docs.hamibot.com/

Hamibot 腳本市場提供了很多腳本,我們都可以免費導入進行試用

首先,我們在 PC Web 的控制檯添加一個機器人,然後使用手機通過「 配對碼 」進行配對,接着從腳本市場選擇一個功能腳本導入,最後在控制檯運行腳本就可以在手機上運行一系列自動化操作了

image

當然,我們也可以根據官方文檔編寫一些實用的腳本上傳到平臺上,獲取一些佣金提成

由於 Hamibot 基於 AutoJS,語法都大同小異,所以本篇文章將只介紹 Hamibot 一些實用的使用技能

2. 實用技能

2-1  App 保活在線

自動化腳本運行實際上是 App 接受到 Web 端 Hamibot 控制檯發送的指令,進而驅動手機進行的一系列動作,所以保證 Hamibot App 在後臺一直運行變得非常重要

程序保活主要包含 6 個方面,分別是:

  • 前臺服務

    打開 Hamibot App,從側邊欄中開啓「 前臺服務 」功能

  • 懸浮窗

    打開 Hamibot App,從側邊欄中開啓「 懸浮窗 」功能

  • 應用自啓動

    手機進入到設置中,搜索關鍵字「 應用管理 」,選擇 Hamibot 應用,開啓「 自啓動 」功能

  • 不鎖定屏幕

    首先手動開啓開發者選項( 不同廠商系統手機的開啓方式不一致,一般是在系統版本連續點擊多次就可以開啓開發者選項 ),然後在開發者選項中開啓「 不鎖定屏幕 」功能,這樣在手機充電時,屏幕不會休眠

  • 關閉省電策略

    在手機應用設置中,選擇省電策略爲「 不限制 」,這樣 App 會在後臺一直運行

  • 保證手機一直聯網

    只有手機一直聯網,Hamibot 控制檯才能將指令傳輸給設備進行運行

2-2  啓動應用

Hamibot 中的 app 模塊提供了很多函數用於操作 App 應用

其中,啓動一個應用有 3 種方式

# 啓動應用的3種方式
# 方式一:通過應用的名稱
# 比如:某寶、某多、某條
app.launchApp('某寶');

# 方式二:通過應用的包名
# 包名通過adb命令或者Android Studio 去解析 APK 獲取
# 比如:啓動 Hamibot 應用
app.launch('com.hamibot.hamibot');

# 方式三:與第二種類似,全局函數
# 通過應用包名啓動應用
launchPackage('com.hamibot.hamibot');

2-3  觸摸操作

觸摸操作是基於屏幕座標進行點擊、長按、滑動等操作,但是該操作需要 Android 7.0 以上或 Root 權限纔能有效

PS:對於一些基於元素的點擊操作失效的場景,換成觸摸操作反而能很好的解決問題

// 使用觸摸操作點擊某個元素
// 獲取某個元素
var widget = id('xxx').findOne();

// 獲取其中心位置,執行點擊操作
click(widget.bounds().centerX(), widget.bounds().centerY());

2-4  控件操作

控件操作爲編寫腳本的核心內容,AutoJS 和 Hamibot 官方文檔都非常的詳細地列出了 UiSelector、UiObject、UiCollection 的使用方法

官方文檔:

https://docs.hamibot.com/reference/widgetsBasedAutomation/

2-5  網絡請求

結合網絡請求,能將爬蟲與自動化完美地結合在一起

這裏以常見的 GET、POST 請求爲例

// 1-GET請求
// 網絡請求,獲取響應值
var r = http.get('www.baidu.com');
// 響應碼
log('code = ' + r.statusCode);
// 響應體(字符串)
log('html = ' + r.body.string());

// 2-POST 請求
var url = 'http://www.**.com/api/login';

//直接傳入一個字典作爲參數
r = http.postJson(url, {
  username: 'xag',
  password: '123456'
});

//獲取請求的響應並彈出吐司
toastLog(r.body.string());

官網提供了網絡請求的基礎函數,大家可以自行去擴展使用

2-6  線程

腳本默認是在主線程中運行的,我們可以將一些耗時的操作添加到線程中執行

auto.waitFor();

//開啓一個子線程
threads.start(function() {
  //在新線程執行的代碼
  while (true) {
    log('子線程');
  }
});


//主線程
while (true) {
  log('腳本主線程');
}

3. 拓展一下

在實際使用 Hamibot 的過程中,發現其提供的定時任務沒有 AutoJS 使用起來方便

比如,如果我想固定在每一天的某個時間執行某個腳本,可惜的是,官方提供的任務功能沒有實現

image

這時候,我們就需要我們在代碼中自己去實現這個功能點了

function setScheduledTask(hour, minute, callTask) {
    let taskTime = new Date();
    taskTime.setHours(hour);
    taskTime.setMinutes(minute);
    let timeDiff = taskTime.getTime() - (new Date()).getTime(); // 獲取時間差
    timeDiff = timeDiff > 0 ? timeDiff : (timeDiff + 24 * 60 * 60 * 1000);
    setTimeout(function() {
        callTask(); 
        setInterval(callTask, 24 * 60 * 60 * 1000); // 24小時爲循環週期
    }, timeDiff); 
}

//獲取配置文件中設置的時間(小時、分鐘)
const { hour,minute } = hamibot.env;
toastLog(hour); 
toastLog(minute)

function create_thread_and_do_something(){
        //定義子線程
        var my_thread = threads.start(function(){
                   console.log("開始執行子線程。 。。。")
                    ...
                        console.log("結束執行子線程。。。。")
        })
}

// 每天某個時間開啓一個子線程,執行一個任務
setScheduledTask(hour, minute, create_thread_and_do_something);

4. 最後

上面內容列出了使用 Hamibot 編寫自動化腳本需要掌握的一些功能點

Hamibot 和 AutoJS 的腳本語法基本類似,但是 Hamibot 在易用性、穩定性、羣控方面更有優勢一點,更多複雜的功能大家可以自行去查閱官方文檔去拓展

如果你覺得文章還不錯,請大家 點贊、分享、留言 下,因爲這將是我持續輸出更多優質文章的最強動力!

推薦閱讀

最全總結 | Android 系統抓包餵飯教程!

完整流程 | 閒魚哪些東西好賣?我幫你分析出來了!

教你用 Python 快速獲取相關概念股,輔助價值投資!

實用 | 盤點幾種解決 Chrome 佔用內存大的實用方案!(文末送書)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章