這次帶給大家使用adb shell node.js實作抖音自動搶紅包,使用adb shell node.js實作抖音自動搶紅包的注意事項有哪些,下面就是實戰案例,一起來看一下。
邏輯很簡單,在抖音視頻播完之後如果是紅包視頻,會跳出紅包。 我們模擬邏輯如下:
點擊螢幕中央,如果有紅包開啟紅包,沒有紅包則暫停影片。
點選返回按鈕,如果有紅包關閉紅包介面,沒有紅包提示再按一次退出(其實沒退出)。
進行上滑操作,進入下一個影片。
點擊、返回、上滑,就這麼三步行為,無論有紅包沒紅包都成立,只要計算好時間就好。
程式碼
下面是一段 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()
開啟手機的開發者模式,啟動 USB偵錯 ,如果是小米請另外開啟 USB偵錯(安全設定) 。連接手機,開啟抖音主介面。將這個js儲存到本地,使用node執行即可。
$ node touch.js
如果發現抖音每20秒上滑一次,表示成功啦~
原理
類似使用 adb shell 來操作手機的文章還有操作跳一跳等,以下說原理。
child_process.exec(command[, options][, callback])
此方法功能為衍生一個 shell,然後在 shell 中執行 command,且緩衝任何產生的輸出。具體可以看參考文件 其實就是等於執行腳本,shell指令了。 我們利用它來執行 adb shell 指令。
adb shell
adb 是電腦連接手機的開發工具,所有電腦對手機的操作其實都是adb 完成的,包括各種手機助手幫你裝 APP 也是。 PS:做了這麼久手機,今天才發現這個好玩的功能…汗…
# 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
# 更多按鍵對應值可以看 Android keyevent 對應的值 透過這些指令我們可以對手機進行一些簡單操作~
# 最後
這其實是個很簡單的邏輯,但是給我很多啟發,以後再有什麼簡單的操作就可以使用adb和node來重複執行啦~ 最後吐槽下:抖音的紅包真的少,昨天刷了3個小時就幾毛錢,不夠電費的說。就當娛樂吧~
PS:以下介紹下Android keyevent 對應的值
# 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;
好了,內容介紹這麼多。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
#以上是使用adb shell+node.js實現抖音自動搶紅包的詳細內容。更多資訊請關注PHP中文網其他相關文章!