Home > Web Front-end > JS Tutorial > body text

Use adb shell+node.js to realize Douyin automatically grab red envelopes

php中世界最好的语言
Release: 2018-04-12 16:52:54
Original
4307 people have browsed it

This time I will bring you how to use adb shell node.js to realize Douyin’s automatic grabbing of red envelopes, and use adb shell node.js to realize Douyin’s automatic grabbing of red envelopes. NotesWhat are they? The following is a practical case. Let’s take a look.

The logic is very simple. After the Douyin video is played, if it is a red envelope video, the red envelope will pop up. Our simulation logic is as follows:

  1. Click the center of the screen. If there is a red envelope, open the red envelope. If there is no red envelope, the video will be paused.

  2. Click the return button. If there is a red envelope, close the red envelope interface. If there is no red envelope, press to exit (actually, it does not exit).

  3. #Swipe up to go to the next video.

Click, return, and swipe up, just three steps. It works regardless of whether there is a red envelope or not, as long as you calculate the time.

Code

The following is a piece of node.js code:

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()
Copy after login

Turn on the developer mode of the phone and start USBdebugging. If it is Xiaomi, please also turn on USB debugging (Security settings). Connect your phone and open the main interface of Douyin. Save this js locally and execute it using node.

$ node touch.js
Copy after login

If you find that Douyin slides up every 20 seconds, it means it is successful~

Principle

Articles similar to using adb shell to operate mobile phones also include jump operations, etc. The principle is explained below.

child_process.exec(command[, options][, callback])
Copy after login

The function of this method is to spawn a shell, then execute the command in the shell, and buffer any generated output. For details, please refer to the reference document. In fact, it is equivalent to executing scripts and shell commands. We use it to execute adb shell commands.

adb shell

adb is a development tool for connecting computers to mobile phones. All computer operations on mobile phones are actually completed by adb, including various mobile phone assistants that help you install APPs. PS: I have been working on mobile phones for so long, and I just discovered this interesting function today... Sigh...

adb shell can install apk, view mobile phone information, operate mobile phone files, simulate click behavior and other functions, it is very powerful. Our main purpose here is to simulate the click behavior of adb shell input. The functions are listed below:

// 输入文本 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
Copy after login

For more key corresponding values, you can see the corresponding values ​​​​of Android keyevent. Through these commands, we can perform some simple operations on the mobile phone~

at last

This is actually a very simple logic, but it gave me a lot of inspiration. If there are any simple operations in the future, I can use adb and node to repeat them~ Finally, I will complain: There are really few red envelopes on Douyin. I spent 3 hours browsing yesterday. It’s just a few cents, which is not enough for the electricity bill. Just treat it as entertainment~

PS: The following introduces the corresponding values ​​​​of Android keyevent

Each value in Android keyevent can be used when using 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;
Copy after login

Okay, that’s all.

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

Detailed explanation of Vuex’s mutations and actions

Vue determines whether the input content has spaces

The above is the detailed content of Use adb shell+node.js to realize Douyin automatically grab red envelopes. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template