Maison  >  Article  >  interface Web  >  Utiliser node.js pour implémenter la fonction de saisie automatique des enveloppes rouges de Douyin

Utiliser node.js pour implémenter la fonction de saisie automatique des enveloppes rouges de Douyin

亚连
亚连original
2018-06-05 15:29:474940parcourir

Cet article présente principalement l'utilisation d'adb shell et de node.js pour réaliser la fonction de saisie automatique d'enveloppe rouge de Douyin. Il est très bon et a une valeur de référence. Les amis dans le besoin peuvent s'y référer

Le. la logique est très simple, dans Douyin Après la lecture de l'audio et de la vidéo, s'il s'agit d'une vidéo à enveloppe rouge, une enveloppe rouge apparaîtra. Notre logique de simulation est la suivante :

  1. Cliquez sur le centre de l'écran, ouvrez l'enveloppe rouge. S'il n'y a pas d'enveloppe rouge, la vidéo sera. fait une pause.

  2. Cliquez sur le bouton de retour. S'il y a une enveloppe rouge, fermez l'interface de l'enveloppe rouge. S'il n'y a pas d'enveloppe rouge, appuyez à nouveau dessus pour quitter (elle ne sort pas réellement).

  3. Faites glisser votre doigt vers le haut pour passer à la vidéo suivante.

Cliquez, revenez et glissez vers le haut, en seulement trois étapes. Cela fonctionne qu'il y ait ou non une enveloppe rouge, à condition de calculer le temps.

Code

Ce qui suit est un morceau de code 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()

Activez le mode développeur de votre téléphone et activez le débogage USB S'il s'agit de Xiaomi, veuillez également activer le débogage USB (paramètres de sécurité). Connectez votre téléphone et ouvrez l'interface principale de Douyin. Enregistrez ce js localement et exécutez-le à l'aide de node.

$ node touch.js

Si vous constatez que Douyin glisse vers le haut toutes les 20 secondes, cela signifie qu'il a réussi~

Principe

Similaire Il existe également des articles sur l'utilisation du shell adb pour faire fonctionner les téléphones portables, comme les opérations de saut, etc. Le principe est expliqué ci-dessous.

child_process.exec(command[, options][, callback])

La fonction de cette méthode est de générer un shell, puis d'exécuter la commande dans le shell et de mettre en mémoire tampon toute sortie générée. Pour plus de détails, veuillez vous référer au document de référence. En fait, cela équivaut à exécuter des scripts et des commandes shell. Nous l'utilisons pour exécuter des commandes adb shell.

adb shell

adb est un outil de développement permettant de connecter un ordinateur à un téléphone mobile. Toutes les opérations informatiques sur le téléphone mobile sont réellement effectuées. par adb, y compris divers Il existe également un assistant de téléphonie mobile qui vous aide à installer des applications. PS : je travaille sur les téléphones mobiles depuis si longtemps, et je viens de découvrir cette fonction intéressante aujourd'hui... Soupir...

adb shell peut installer l'apk, afficher les informations du téléphone mobile, exploiter les fichiers du téléphone mobile, simulez les comportements de clic et d’autres fonctions, c’est très puissant. Notre objectif principal ici est de simuler le comportement de clic de l'entrée du shell adb. Chaque fonction est répertoriée ci-dessous :

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

Pour plus de valeurs clés correspondantes, vous pouvez voir les valeurs correspondantes de l'événement clé Android Grâce à ces commandes, nous pouvons effectuer quelques opérations simples sur le téléphone ~<.>

Enfin

C'est en fait une logique très simple, mais cela m'a donné beaucoup d'inspiration s'il y a des opérations simples dans le futur. , je peux utiliser adb et node pour les répéter~ Enfin, laissez-moi me plaindre : il y a vraiment peu d'enveloppes rouges sur Douyin, je n'ai payé que quelques centimes après les avoir utilisées pendant 3 heures hier, ce qui n'est pas suffisant pour les factures d'électricité. Traitez-le simplement comme un divertissement ~

PS : ce qui suit présente les valeurs ​​​​correspondant à l'événement clé Android

Chaque valeur dans l'événement clé Android est utilisé lors de l'utilisation du shell adb Utilisé lors de la saisie.

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;
J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.

Articles associés :

Comment implémenter la fonction d'annulation et de rétablissement dans Immutable.js (tutoriel détaillé)

Combien y en a-t-il in vue Un moyen de lier la valeur d'une variable et de l'empêcher de changer (tutoriel détaillé)

Introduction à la différence entre définir une fonction en JavaScript en utilisant var foo = function () { } et la fonction foo() (Tutoriel détaillé)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn