昨天回家發(fā)現(xiàn)家里人都在用抖音搶紅包意敛,看了下操作邏輯牧挣,發(fā)現(xiàn)規(guī)律后覺得可以用軟件控制點紅包朋魔,于是做了以下嘗試券敌。
運行環(huán)境
- node.js
- adb
搭建過程網(wǎng)上很多唾戚,就不贅述啦~
搶紅包邏輯
邏輯很簡單,在抖音視頻播完之后如果是紅包視頻待诅,會跳出紅包。
我們模擬邏輯如下:
- 點擊屏幕中央熊镣,如果有紅包打開紅包卑雁,沒有紅包則暫停視頻。
- 點擊返回按鈕绪囱,如果有紅包關(guān)閉紅包界面测蹲,沒有紅包提示再按一次退出(其實沒退出)。
- 進行上滑操作鬼吵,進入下一個視頻扣甲。
點擊、返回齿椅、上滑琉挖,就這么三步行為,無論有紅包沒紅包都成立涣脚,只要計算好時間就行示辈。
代碼
下面是一段 node.js
代碼:
touch.js
var process = require('child_process');
function exec(shell) {
process.exec(shell,function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
}
});
}
function click() {
console.log('click')
exec(`adb shell input tap 400 600`)
setTimeout(back, 1000)
}
function swipe() {
console.log('swipe')
exec(`adb shell input swipe 400 800 400 0 500`)
setTimeout(click, 20000)
}
function back() {
console.log('back')
exec(`adb shell input keyevent 4`)
setTimeout(swipe, 1000)
}
swipe()
打開手機的開發(fā)者模式,啟動 USB調(diào)試
遣蚀,如果是小米請另外打開 USB調(diào)試(安全設(shè)置)
矾麻。連接手機,打開抖音主界面芭梯。將這個js保存到本地险耀,使用node執(zhí)行即可。
$ node touch.js
如果發(fā)現(xiàn)抖音每20秒上滑一次玖喘,說明成功啦~
原理
類似使用 adb shell 來操作手機的文章還有操作跳一跳等甩牺,下面說下原理。
child_process.exec(command[, options][, callback])
該方法功能為衍生一個 shell芒涡,然后在 shell 中執(zhí)行 command柴灯,且緩沖任何產(chǎn)生的輸出卖漫。具體可以看參考文檔
其實就是等于執(zhí)行腳本,shell命令了赠群。
我們利用它來執(zhí)行 adb shell
命令羊始。
adb shell
adb 是電腦連接手機的開發(fā)工具,所有電腦對手機的操作其實都是adb 完成的查描,包括各種手機助手幫你裝 APP 也是突委。
PS:做了這么久手機,今天才發(fā)現(xiàn)這個好玩的功能……汗……
adb shell 可以裝apk冬三、看手機信息匀油、操作手機文件、模擬點擊行為等功能勾笆,是非常強大的敌蚜。我們這里主要是要模擬點擊行為 adb shell input
。
下面羅列下各功能:
// 輸入文本 content
$ adb shell input text “hello”
// 點擊返回按鈕 keynumber
$ adb shell input keyevent 4
// 點擊屏幕某個點 x y
$ adb shell input tap 400 400
// 滑動 x1 y1 x2 y2 time
$ adb shell input swipe 400 800 400 0 500
// 下面三個不太清楚窝爪,再研究
$ adb shell input press
$ adb shell input roll
$ adb shell input tmode
更多按鍵對應(yīng)值可以看Android keyevent 對應(yīng)的值
通過這些命令我們可以對手機進行一些簡單操作啦~
最后
這其實是個很簡單的邏輯弛车,但是給我很多啟發(fā),以后再有什么簡單的操作就可以使用adb和node來重復(fù)執(zhí)行啦~
最后吐槽下:抖音的紅包真的少蒲每,昨天刷了3個小時就幾毛錢纷跛,不夠電費的說。就當娛樂吧~