利用adb shell和node.js實現(xiàn)抖音搶紅包功能(推薦)
邏輯很簡單,在抖音視頻播完之后如果是紅包視頻,會跳出紅包。 我們模擬邏輯如下:
- 點(diǎn)擊屏幕中央,如果有紅包打開紅包,沒有紅包則暫停視頻。
- 點(diǎn)擊返回按鈕,如果有紅包關(guān)閉紅包界面,沒有紅包提示再按一次退出(其實沒退出)。
- 進(jìn)行上滑操作,進(jìn)入下一個視頻。
點(diǎ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()打開手機(jī)的開發(fā)者模式,啟動 USB調(diào)試 ,如果是小米請另外打開 USB調(diào)試(安全設(shè)置) 。連接手機(jī),打開抖音主界面。將這個js保存到本地,使用node執(zhí)行即可。
$ node touch.js
如果發(fā)現(xiàn)抖音每20秒上滑一次,說明成功啦~
原理
類似使用 adb shell 來操作手機(jī)的文章還有操作跳一跳等,下面說下原理。
child_process.exec(command[, options][, callback])
該方法的功能為衍生一個 shell,然后在 shell 中執(zhí)行 command,且緩沖任何產(chǎn)生的輸出。具體可以看參考文檔 其實就是等于執(zhí)行腳本,shell命令了。 我們利用它來執(zhí)行 adb shell 命令。
adb shell
adb 是電腦連接手機(jī)的開發(fā)工具,所有電腦對手機(jī)的操作其實都是adb 完成的,包括各種手機(jī)助手幫你裝 APP 也是。 PS:做了這么久手機(jī),今天才發(fā)現(xiàn)這個好玩的功能……汗……
adb shell 可以裝apk、看手機(jī)信息、操作手機(jī)文件、模擬點(diǎn)擊行為等功能,是非常強(qiáng)大的。我們這里主要是要模擬點(diǎn)擊行為 adb shell input 。 下面羅列下各功能:
// 輸入文本 content $ adb shell input text “hello” // 點(diǎn)擊返回按鈕 keynumber $ adb shell input keyevent 4 // 點(diǎn)擊屏幕某個點(diǎn) 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)的值 通過這些命令我們可以對手機(jī)進(jìn)行一些簡單操作啦~
最后
這其實是個很簡單的邏輯,但是給我很多啟發(fā),以后再有什么簡單的操作就可以使用adb和node來重復(fù)執(zhí)行啦~ 最后吐槽下:抖音的紅包真的少,昨天刷了3個小時就幾毛錢,不夠電費(fèi)的說。就當(dāng)娛樂吧~
PS:下面介紹下Android keyevent 對應(yīng)的值
Android keyevent 中的各個值,在使用adb shell input 的時候用得到。
KEYCODE_UNKNOWN=0; KEYCODE_SOFT_LEFT=1; KEYCODE_SOFT_RIGHT=2; KEYCODE_HOME=3; KEYCODE_BACK=4; KEYCODE_CALL=5; KEYCODE_ENDCALL=6; KEYCODE_0=7; KEYCODE_1=8; KEYCODE_2=9; KEYCODE_3=10; KEYCODE_4=11; KEYCODE_5=12; KEYCODE_6=13; KEYCODE_7=14; KEYCODE_8=15; KEYCODE_9=16; KEYCODE_STAR=17; KEYCODE_POUND=18; KEYCODE_DPAD_UP=19; KEYCODE_DPAD_DOWN=20; KEYCODE_DPAD_LEFT=21; KEYCODE_DPAD_RIGHT=22; KEYCODE_DPAD_CENTER=23; KEYCODE_VOLUME_UP=24; KEYCODE_VOLUME_DOWN=25; KEYCODE_POWER=26; KEYCODE_CAMERA=27; KEYCODE_CLEAR=28; KEYCODE_A=29; KEYCODE_B=30; KEYCODE_C=31; KEYCODE_D=32; KEYCODE_E=33; KEYCODE_F=34; KEYCODE_G=35; KEYCODE_H=36; KEYCODE_I=37; KEYCODE_J=38; KEYCODE_K=39; KEYCODE_L=40; KEYCODE_M=41; KEYCODE_N=42; KEYCODE_O=43; KEYCODE_P=44; KEYCODE_Q=45; KEYCODE_R=46; KEYCODE_S=47; KEYCODE_T=48; KEYCODE_U=49; KEYCODE_V=50; KEYCODE_W=51; KEYCODE_X=52; KEYCODE_Y=53; KEYCODE_Z=54; KEYCODE_COMMA=55; KEYCODE_PERIOD=56; KEYCODE_ALT_LEFT=57; KEYCODE_ALT_RIGHT=58; KEYCODE_SHIFT_LEFT=59; KEYCODE_SHIFT_RIGHT=60; KEYCODE_TAB=61; KEYCODE_SPACE=62; KEYCODE_SYM=63; KEYCODE_EXPLORER=64; KEYCODE_ENVELOPE=65; KEYCODE_ENTER=66; KEYCODE_DEL=67; KEYCODE_GRAVE=68; KEYCODE_MINUS=69; KEYCODE_EQUALS=70; KEYCODE_LEFT_BRACKET=71; KEYCODE_RIGHT_BRACKET=72; KEYCODE_BACKSLASH=73; KEYCODE_SEMICOLON=74; KEYCODE_APOSTROPHE=75; KEYCODE_SLASH=76; KEYCODE_AT=77; KEYCODE_NUM=78; KEYCODE_HEADSETHOOK=79; KEYCODE_FOCUS=80;//*Camera*focus KEYCODE_PLUS=81; KEYCODE_MENU=82; KEYCODE_NOTIFICATION=83; KEYCODE_SEARCH=84; KEYCODE_MEDIA_PLAY_PAUSE=85; KEYCODE_MEDIA_STOP=86; KEYCODE_MEDIA_NEXT=87; KEYCODE_MEDIA_PREVIOUS=88; KEYCODE_MEDIA_REWIND=89; KEYCODE_MEDIA_FAST_FORWARD=90; KEYCODE_MUTE=91;
好了,內(nèi)容就介紹這么多。
到此這篇關(guān)于利用adb shell和node.js實現(xiàn)抖音搶紅包功能(推薦)的文章就介紹到這了,更多相關(guān)node.js adb shell 搶紅包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.js中Mongodb數(shù)據(jù)庫操作方法(最新推薦)
MongoDB是一種基于分布式文件存儲的NoSQL數(shù)據(jù)庫,它允許存儲和檢索大量結(jié)構(gòu)化數(shù)據(jù),MongoDB的核心概念包括數(shù)據(jù)庫、集合和文檔,每個集合可以包含多個文檔,每個文檔是一個鍵值對的集合,本文介紹Node.js Mongodb數(shù)據(jù)庫操作方法,感興趣的朋友一起看看吧2024-12-12
Nodejs中使用phantom將html轉(zhuǎn)為pdf或圖片格式的方法
這篇文章主要介紹了Nodejs中使用phantom將html轉(zhuǎn)為pdf或圖片格式的方法,需要的朋友可以參考下2017-09-09
node vue項目開發(fā)之前后端分離實戰(zhàn)記錄
其實基于vue.js+node.js構(gòu)建的開源博客系統(tǒng)有很多,下面這篇文章主要給大家介紹了關(guān)于node vue項目開發(fā)之前后端分離的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友下面來一起看看吧。2017-12-12
node.js+npm的環(huán)境配置以及添加鏡像(保姆級教程)
本文主要介紹了node.js+npm的環(huán)境配置以及添加鏡像,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
NodeJS和BootStrap分頁效果的實現(xiàn)代碼
這篇文章主要介紹了NodeJS和BootStrap分頁效果的實現(xiàn)代碼的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-11-11
Windows部署NVM并下載多版本Node.js的方法(含刪除原有Node的方法)
這篇文章主要介紹了Windows部署NVM并下載多版本Node.js的方法(含刪除原有Node的方法),文中通過圖文結(jié)合的方式講解的非常詳細(xì),對大家了解Node.js有一定的幫助,需要的朋友可以參考下2025-01-01

