好用且能兼職賺錢的自動化工具 - Hamibot!

語言: CN / TW / HK

這是「進擊的Coder」的第 569  篇技術分享

作者:星安果

來源:AirPython

閱讀本文大概需要 7 分鐘。

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

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

Hamibot 指令碼市場提供了很多指令碼,我們都可以免費匯入進行試用

首先,我們在 PC Web 的控制檯新增一個機器人,然後使用 手機通過 「  配對碼  進行配對,接著從指令碼市場選擇一個功能指令碼匯入,最後在控制檯執行指令碼就可以在手機上執行一系列自動化操作了

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

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

1. 實用技能

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、 Ui Object、Ui Collection 的使用方法

官方文件:

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('指令碼主執行緒');
}

2. 拓展一下

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

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

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

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);

3. 最後

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

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

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

End

崔慶才的新書 《Python3網路爬蟲開發實戰(第二版)》 已經正式上市了!書中詳細介紹了零基礎用 Python 開發爬蟲的各方面知識,同時相比第一版新增了 JavaScript 逆向、Android 逆向、非同步爬蟲、深度學習、Kubernetes 相關內容,‍同時本書已經獲得 Python 之父 Guido 的推薦,目前本書正在七折促銷中!

內容介紹: 《Python3網路爬蟲開發實戰(第二版)》內容介紹

掃碼購買

好文和朋友一起看~