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

Posted 优小U

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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崩溃哦。

以上是关于618来了还愁没钱买东西?五分钟教你如何白嫖!的主要内容,如果未能解决你的问题,请参考以下文章

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

PHP教你五分钟编写一个实时弹幕网站

618还没到,EasyRecovery已放价提前开跑!

没钱买珍珠首饰,能够画一个

震惊!白嫖!使用Github/Gitee搭建基于Hexo的静态网站服务!

关于为了吃瓜通宵7天写了一个网站却没钱买域名这件小事