• 技术文章 >web前端 >js教程

    使用adb shell+node.js实现抖音自动抢红包

    php中世界最好的语言php中世界最好的语言2018-04-12 16:52:54原创2693

    这次给大家带来使用adb shell+node.js实现抖音自动抢红包,使用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;

    好了,内容就介绍这么多。

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    Vuex的mutations与actions使用详解

    vue判断input输入内容有否有空格

    以上就是使用adb shell+node.js实现抖音自动抢红包的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:vue-clibabel配置文件.babelrc怎么使用 下一篇:CDN加速react webpack打包文件过程

    相关文章推荐

    • 聊聊Node.js + worker_threads如何实现多线程?(详解)• 完全掌握JavaScript预编译过程• 总结分享一些使用jQuery实现的DOM操作(收藏)• JS实现情人节爱心满屏飘落的唯美特效(附完整代码)• 什么是Express中间件?Node中要怎么使用?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网