首頁  >  文章  >  web前端  >  使用node.js實現抖音自動搶紅包功能

使用node.js實現抖音自動搶紅包功能

亚连
亚连原創
2018-06-05 15:29:474831瀏覽

這篇文章主要介紹了利用adb shell和node.js實現抖音自動搶紅包功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

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

  1. 點擊螢幕中央,如果有紅包開啟紅包,沒有紅包則暫停影片。

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

  3. 進行上滑操作,進入下一個影片。

點擊、返回、上滑,就這麼三步行為,無論有紅包沒紅包都成立,只要計算好時間就行。

程式碼

下面是一段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;

上面是我整理給大家的,希望未來會對大家有幫助。

相關文章:

在Immutable.js中如何實作撤銷重做功能(詳細教學)

在vue中有幾種綁定變數的值以及防止其改變的方法(詳細教學)

在JavaScript中定義函數以var foo = function () {} 和function foo()區別介紹(詳細教學)

以上是使用node.js實現抖音自動搶紅包功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn