溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何利用adb shell和node.js實現(xiàn)抖音自動搶紅包功能

發(fā)布時間:2021-04-20 12:57:10 來源:億速云 閱讀:400 作者:小新 欄目:web開發(fā)

這篇文章主要介紹如何利用adb shell和node.js實現(xiàn)抖音自動搶紅包功能,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

js的作用是什么

1、能夠嵌入動態(tài)文本于HTML頁面。2、對瀏覽器事件做出響應(yīng)。3、讀寫HTML元素。4、在數(shù)據(jù)被提交到服務(wù)器之前驗證數(shù)據(jù)。5、檢測訪客的瀏覽器信息。6、控制cookies,包括創(chuàng)建和修改等。7、基于Node.js技術(shù)進(jìn)行服務(wù)器端編程。

邏輯很簡單,在抖音視頻播完之后如果是紅包視頻,會跳出紅包。 我們模擬邏輯如下:

  1. 點擊屏幕中央,如果有紅包打開紅包,沒有紅包則暫停視頻。

  2. 點擊返回按鈕,如果有紅包關(guān)閉紅包界面,沒有紅包提示再按一次退出(其實沒退出)。

  3. 進(jìn)行上滑操作,進(jì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)的值 通過這些命令我們可以對手機進(jìn)行一些簡單操作啦~

最后

這其實是個很簡單的邏輯,但是給我很多啟發(fā),以后再有什么簡單的操作就可以使用adb和node來重復(fù)執(zhí)行啦~ 最后吐槽下:抖音的紅包真的少,昨天刷了3個小時就幾毛錢,不夠電費的說。就當(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;

以上是“如何利用adb shell和node.js實現(xiàn)抖音自動搶紅包功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI