Please enable Javascript to view the contents

Bash和抢菜

 ·  ☕ 2 分钟

疫情封闭太久,我已经连续4天早起没抢到菜了

我在偶然间看到阮一峰老师的周刊里有一片文章是关于如何从安卓手机翻录电子书
https://shkspr.mobi/blog/2021/12/quick-and-dirty-way-to-rip-an-ebook-from-android/

嗯?我好像可以试试用bash脚本抢菜

1.安装adb

这里由于我的mac笔记本已经安装了brew,所以这一步比较简单

brew cask install android-platform-tools

可以看到adb版本就说明安装成功了

adb version

2.adb连接安卓手机

把手机和电脑连接后,手机弹出框选择传输文件(不要选仅充电)
设置好手机的USB调试开启

电脑端运行命令查看手机设备

adb devices

3.模拟点击

好的终于可以开始写脚本了,这次的设想比较简单,让adb模拟点击
首先试试运行点击命令能否生效

adb shell input tap 893 2237

这里tap后跟的两个数字参数是手机的x轴和y轴,以此确定点击位置

确认可以点击后,我们需要知道怎么控制点击的位置

4.开启监听事件

经过查询后找到了一个命令可以监听事件来获取点击位置

开启

adb shell getevent -l

此时在手机上随便点一个位置可以看到输出事件了
找到POSITION_X和POSITION_Y
/dev/input/event5: EV_ABS ABS_MT_POSITION_X 00000316
/dev/input/event5: EV_ABS ABS_MT_POSITION_Y 0000014d

这里的316和14d是位置xy轴的16进制,转为10进制后为790和333

在线16转10进制

这样就可以知道我们想要点击位置的xy轴了

5.编写脚本

// cd 到你的工作目录
touch cai.sh

// 修改执行权限
chmod +x ./cai.sh

// 这里我打开vscode写脚本
code cai.sh

cai.sh

#!/bin/bash
echo 开始抢菜咯
for i in {000001..999999}; do
   adb shell input tap 893 2237
   echo 点击第 $i 次
  #  sleep 0.01s
done
echo All done

代码很简单,循环999999次点击一个固定的位置,觉得点击还是太慢了就注释了sleep

运行脚本

./cai.sh

6.结语

最后我成功抢到了菜,实际情况中我在两个终端中分别同时运行bash脚本加快点击频率
脚本还有很多可以拓展的空间,希望可以开拓你的思路

晚上可以吃海鲜意面了~

分享

Llane00
作者
Llane00
Web Developer