- 来源:前端大课堂
- 原文链接:快过年了,来学node adb自动抢红包啦
- 本文已由前端大课堂作者{mathwlin}独家授权,转载请声明出处!
点赞再看,养成习惯
本文GitHubhttps://github.com/regexp-lin/node-adb-demos.git 已收录,欢迎Star和完善,大家可以多多交流~让我们可以一起记录和进步!
前言
快过年了,各大APP(微视、抖音、趣头条)肯定会出各种刷视频、刷图文就可以领红包的事情,本文主要讲如何利用 ADB 做一些自动化薅羊毛的事情,例如刷刷微视红包,过年的时候自动刷刷抖音的红包等等,还可以自动阅读微信读书每周可以收获3天的无限卡(可以免费阅读全场的图书)。文末会放上所有代码,只需要拉下来就可以跑起来,除了代码研究,也可以试试刷微视红包成不成功。
成功的样子
1. 微视自动刷时长红包
微视自动刷时长红包
注意看上面的红包进度条,是在慢慢增长的。
2.微信读书自动刷阅读时长红包
自动阅读
每周可以通过阅读时长换阅读无限卡,大概每阅读两个小时可以换一天的无限卡,每周是3天封顶。
如何安装ADB
1. 通过 Homebrew 安装
brew cask install android-platform-tools
2. 通过命令行测试是否成功
adb devices
安装 adb 成功
输出格式为 [serialNumber] [state],serialNumber 就是序列号,state 有如下几种:
offline —— 表示设备未连接成功或无响应。
device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。
no device —— 没有设备/模拟器连接。
adb help 可以看到帮助信息:
adb help
ADB 常用命令大全
这里有非常全的用法大全,https://github.com/mzlogin/awesome-adb。下面介绍常用语法:
查看设备
$ adb devices
List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device
为命令指定目标设备, 如果有多个设备/模拟器连接,则需要为命令指定目标设备。
-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s
启动、停止
启动 adb server 命令:
adb start-server
停止 adb server 命令:
adb kill-server
查看 adb 版本
adb version
查看应用列表
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [–user USER_ID] [FILTER]
所有应用
adb shell pm list packages
安装 APK / 卸载 APK
adb install [-lrtsdg] <path_to_apk>
adb uninstall [-k]
参数:
adb install 后面可以跟一些可选参数来控制安装 APK 的行为,可用参数及含义如下:
-l 将应用安装到保护目录 /mnt/asec
-r 允许覆盖安装
-t 允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用
复制设备里的文件到电脑
adb pull <设备里的文件路径> [电脑上的目录]
adb pull /sdcard/sr.mp4 ~/tmp/
复制电脑里的文件到设备
adb push <电脑上的文件路径> <设备里的目录>
adb push ~/sr.mp4 /sdcard/
模拟按键 / 输入
adb shell input keyevent
不同的 keycode 能实现不同的功能,完整的 keycode 列表详见 KeyEvent,我们摘取部分如下:
下面是 input 命令的一些用法举例。
HOME 键
adb shell input keyevent 3
返回键
adb shell input keyevent 4
左右上下滑动
adb shell input swipe 300 1000 300 500
参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标。
点击屏幕
adb shell input tap 500 500
参数 500 500 是点击屏幕的坐标。
获取屏幕的分辨率
adb shell wm size
Node ADB 入门
有一个比较好用的 node.js 的ADB客户端 adbkit, https://github.com/openstf/adbkit, 有兴趣的可以看下,有些封装的比较好的 api 可以使用。
我们这里为了入门容易,直接用 shell 脚本全程撸到结束。
# utils.js
const shell = require(‘shelljs’)
//向上滑动 swipe x1, y1 -> x2, y2
const swipeUp = function () {
shell.exec(‘adb shell input swipe 300 1000 300 500’)
}
//向下滑动 swipe x1, y1 -> x2, y2
const swipeDown = function() {
shell.exec(‘adb shell input swipe 300 1000 300 500’)
}
//向右滑动 swipe x1, y1 -> x2, y2
const swipeRight = function() {
shell.exec(‘adb shell input swipe 300 500 900 500’)
}
//向左滑动 swipe x1, y1 -> x2, y2
const swipeLeft = function() {
shell.exec(‘adb shell input swipe 900 500 300 500’)
}
//点击屏幕
const tap = function() {
shell.exec(‘adb shell input tap 500 500’)
}
//获取分辨率
const showPhysicalSize = function() {
shell.exec(‘adb shell wm size’)
}
//点关注
const focus = function() {
shell.exec(‘adb shell input tap 1000 1170’)
}
//点赞
const praise = function() {
shell.exec(‘adb shell input tap 1000 1270’)
}
module.exports = {
swipeUp,
swipeDown,
swipeRight,
swipeLeft,
showPhysicalSize,
focus,
praise,
tap
}
上面的代码用的时候要有一点微调,因为我的手机的分辨率是 1080 * 2340, 所以要根据你手机的分辨率调整下大概点击哪个位置是对应屏幕的位置。
# 微视.js
每个视频看5秒,自动滑到下一个视频
const utils = require('./utils')
//每两秒点赞后滑动一条视频
setInterval(() => {
// utils.praise()
utils.swipeUp()
}, 5000)
# 微信读书.js
每页书的内容看一分钟,自动左滑到下一页
const utils = require('./utils')
//每两秒点赞后滑动一条视频
setInterval(() => {
// utils.praise()
utils.swipeLeft()
}, 60 * 1000)
点关注,不迷路
好了各位,以上就是这篇文章的全部内容了,如果本篇博客有任何错误,请批评指教,不胜感激 !
如果有任何问题欢迎加我的微信: mathwlin,一起讨论交流。 也可以关注我的微信公众号:「前端全栈技术」,不胜感激!文章每周持续更新,会密集分享大前端的很多知识点,包括不限于 nodejs、serverless、webassembly、flutter、微前端等有意思的东西,也会输出各种工程化的实践和思路。欢迎大家关注和加微信交流。