618来了还愁没钱买东西?五分钟教你如何白嫖!

今年的618比以往活动来的更加早,不少商家都提前了活动,导致剁手党们开始蠢蠢欲动了,每天都守着红包雨,开始猛戳手机屏幕,就算手不累也担心下屏幕吧(不知道有没有买碎屏险,哈哈😅 ),作为一枚程序员,绝对不能允许重复的动作,这不自动化抢红包程序献上给各位剁手党们。🤑

1️⃣ 效果展示

因为考虑到版权和广告的关系没有用某宝抢红包的截图,这里我是自己模拟了一个抢红包的APP,效果如图:
在这里插入图片描述

2️⃣ 准备工作

2.1 安装SDK

工欲善其事必先利其器,首先去官网下载并安装对应系统版本的SDK:https://www.androiddevtools.cn/

头部菜单选择Android SDK 工具 > SDK Tools,选择windows版本下载:

下载完成后解压到一个目录 D:\android-sdk-windows\platform-tools
在这里插入图片描述
双击运行SDK Manager.exe 并下载和更新一些插件和工具:(过程有点慢,可以选择自己需要的安卓版本,然后耐心等待😴)
在这里插入图片描述
配置环境变量,将刚才解压的目录 D:\android-sdk-windows\platform-tools 添加到环境变量:
在这里插入图片描述

打开 cmd 命令行,输入 adb 查看是否安装成功:
在这里插入图片描述

PS:别忘了安装Java哦😜

2.2 使用ADB操作手机

连接方式1:USB连接
首先保证硬件状态正常,包括 Android 设备处于正常开机状态,USB 连接线和各种接口完好,Android 设备的开发者选项和 USB 调试模式已开启。可以到「设置」-「开发者选项」-「Android 调试」查看。如果在设置里找不到开发者选项,那需要通过一个彩蛋来让它显示出来:在「设置」-「关于手机」连续点击「版本号」7 次。

然后保证设备驱动状态正常,这一点貌似在 LinuxMac OS X 下不用操心,在 Windows 下有可能遇到需要安装驱动的情况,确认这一点可以右键「计算机」-「属性」,到「设备管理器」里查看相关设备上是否有黄色感叹号或问号,如果没有就说明驱动状态已经好了。否则可以下载一个手机助手类程序来安装驱动先。

通过 USB 线连接好电脑和设备后确认状态,在cmd命令行输入adb devices可以查看当前连接的设备:
在这里插入图片描述

🔔 PS:请确保打开了开发人员选项和USB调试,否则是看不到设备的,连接方式要传输文件方式。

连接方式2:无线连接(需要借助 USB 线)

除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 USB 连接线的限制啦!

操作步骤:

  • 将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi
  • 将设备与电脑通过 USB 线连接
  • 应确保连接成功(可运行 adb devices 看是否能列出该设备)
  • 让设备在 5555 端口监听 TCP/IP 连接:adb tcpip 5555
  • 然后断开USB,使用adb connect 192.168.xx.xx来远程连接手机

在这里插入图片描述

连接成功后就可以操作手机了,先来获取下屏幕的分辨率,后面会有用到:
在这里插入图片描述

adb命令有很多,这里列举出一些常见的命令:

命令作用
adb shell pm list packages查看所有应用
adb install [-lrtsdg] <path_to_apk>安装apk
adb pull <设备里的文件路径> [电脑上的目录]复制设备里的文件到电脑
adb push <电脑上的文件路径> <设备里的目录>复制电脑里的文件到设备
adb shell input keyevent 26电源键
adb shell input keyevent 82菜单键
adb shell input keyevent 3Home键
adb shell input keyevent 4返回键
adb shell input keyevent 224点亮屏幕
adb shell input keyevent 223熄灭屏幕
adb shell input swipe 300 1000 300 500滑动解锁
adb shell input tap 50 250点击
adb shell input text hello输入文本

有关ADB教程,点击进入专栏:Awesome Adb

3️⃣ 抢红包实现

最简单的抢红包形式就是一直在屏幕上点击【抢】,相同时间,点击次数最多,获得的红包就最大,而频繁点击的过程我们可以用 adb 来模拟点击。先截图手机屏幕,然后放到PC查看需要点击的位置的坐标是多少,然后再使用adb命令触发点击操作。
在这里插入图片描述
假如需要点击微信图标,先找到此处的像素坐标(669,1590),然后再执行以下命令则可以马上打开微信😏:

$ adb shell input tap 669 1590

基本操作就是这样啦,但是总不能在cmd命令行里面手动执行N次吧,还是要借助高级语言来实现多次点击,继续往下看🤖

3.1 NodeJS版

// auto.js
const process = require('child_process')

const touch = function(){
    process.exec('adb shell input tap 669 1590',function(error, stdout, stderr){
        if (error !== null) {
            console.log('exec error: ' + error)
        }else{
            console.log('exec success')
        }
    })
}
// 执行次数
let times = 10
while(times > 0){
    touch()
    times--
}

执行node auto.js 会重复执行adb命令,执行结果:

$ node auto.js 
exec success
exec success
exec success
exec success
exec success
exec success
exec success
exec success
exec success
exec success

3.2 Python版

Python实现与NodeJS类似:

import os
os.system('adb shell input tap 669 1590')

3.3 Java版

Java 版本因为支持多线程,这里就使用多线程来执行adb命令,这样能防止手机卡死或应用崩溃:

// CmdUtils.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class CmdUtils {
    List<String> resultList = new ArrayList<String>();
    public List<String> excuteCmd(String command){
        String line = null;
        StringBuilder sb = new StringBuilder();
        Runtime runtime = Runtime.getRuntime();
        try {
            Process process = runtime.exec(command);
            BufferedReader  bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            while ((line = bufferedReader.readLine()) != null) {
                resultList.add(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return resultList;
    }
}

创建100个线程来执行:

// Main.java
public class Main {
    public static void main(String[] args) {
        // 10个线程执行点击,模拟的点击线程不要超过100,否则对手机会造成损害
        for(int i=0;i<100;i++){
            new MyThread().start();
        }
    }
}

// 模拟点击线程
class MyThread extends Thread {
    CmdUtils cmdUtils = new CmdUtils();
    @Override
    public void run() {
        super.run();
        cmdUtils.excuteCmd("adb shell input tap 504 588");
    }
}

4️⃣ 总结

红包虽小,但是抢红包的过程才能显出节日氛围,最重要的是它给了你买买买的勇气,赶紧分享给老婆👩‍❤️‍👨,女朋友👭,闺蜜👧,同学👩,同事🧑吧,她们的👗 👘 🩱 🩲 🩳 👙 👚 👞 👟 🥾 🥿 👠 👡 🩰 👢 👜 👠👒💄 💍 👙 🌂 还有 🍎 🍋 🍌 🍉 🍍 🍒 🍭已经等不及了,赶紧安排,哈哈哈🤑

欢迎点赞评论转发😘~

🔔 PS:注意执行时间间隔不能太小,否则容易导致APP崩溃哦。

在这里插入图片描述

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 42
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优小U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值