巧用ADB安卓调试工具,在双十一直播间轻松回复文字领取优惠!

6788fad2858e3fe7cb0a0f25eed6012f.jpeg

4b85c838dd5209f697d782a38ac63e54.gif

微信改版了,现在看到我们全凭缘分,为了不错过【全栈工程师修炼指南】重要内容及福利,大家记得按照上方步骤设置「接收文章推送」哦~

关注回复【学习交流群】加入【SecDevOps】学习交流群!


文章目录

eb3ad003f2ee5aed9c6457c50123d796.png


1.前言简述

描述: 通过前面几篇双十一购物文章,也知道作者最近房屋装修已接近尾声了,趁着双十一入手一波家用电器,对于我这样收入不高的打工人,只能想办法能省则省,某天购买某电器时发现,直播间可以抢优惠券、半价、以及免单,我心♥动了,作为想省钱的资深IT民工必须跟进,根据直播间中活动提示只在当日20-24点,给蹲直播间中已下单人员抽取优惠,然而我比不上前面单身18年的手速了,一个都没抢到。1a09ccfc062abacdb48eeeedaec2b9d7.png

俗话说,双十一,富人靠钞票,打工人靠优惠券,为了减少吃方便面的天数,我没有就此放弃,不就是按照主播的口令刷屏抽取嘛,我直接使用adb(Android 调试桥,即调试工具)搞一个自动化脚本不就行了,说干就干,看我如何通过adb工具开启手机USB调试实现在直播间回复【指定口令】。

此文项目的实践视频

【双十一直播间技巧,巧用ADB安卓调试工具回复文字领取优惠券!】

2.前置准备

描述: 此处作者准备了两台安卓手机,一个小米、一个华为,此处以小米手机(MIUI)为例进行相应设置。

温馨提示: 若对adb工具不了解的朋友,请参考如下两篇文章《安卓设备adb调试工具安装配置使用实践》以及《安卓设备adb调试工具命令归纳总结一览表》。

操作步骤:

Step 0.提前准备好USB线以及安卓手机,并且计算机中安装 adb 工具以及驱动,不用安装的朋友参考上述提示。

Step 1.打开设置 -> 点击【我的设备】-> 点击【MIUI版本】 -> 点击三次 即可启动开发者模式。

Step 2.返回设置 -> 搜搜【开发者选项】 -> 开启开发者选项 -> 启用【USB调试】以及允许【USB安装/调试】—> 最后在【输入】选项卡中启用【指针位置】。

75fccb7ac9601b19bda007192a14fbbc.png
weiyigeek.top-配置如下图所示图

1.需输入ASCII字符串情况(仅)

描述: 在我们前面学习 adb 工具时介绍到过 adb shell input 命令,其不单单只是点击页面、滑动页面,以及执行特殊的按键,它还可以输入指定的 ASCII 字符。

使用语法:

$ adb shell input
Usage: input [<source>] [-d DISPLAY_ID] <command> [<arg>...]
  text <string> (Default: touchscreen)

简单演示:

# 1.在向手机获取输入焦点的输入框输入指定字符串。
adb shell input text "my-site-is-weiyigeek.top"

# 2.若向手机发送中文字符串的会存在问题。
adb shell input text "欢迎访问博主站点 weiyigeek.top"

执行结果:95546b4d7218128d04fc3234f3a7c4b8.png

温馨提示: 若解决使用 input text 子命令无法输入中文的问题,请参考下一片段。

知识扩展:除此之外,你可以在不安装 ADBKeyBoard 情况下利用input keyevent命令来粘贴固定的字符串文字, 例如:

# 复制
KEYCODE_COPY  278 (0x00000116) 
# 粘贴
KEYCODE_PASTE 279 (0x00000117) 

# 假设,你已提前复制了指定字符串,打开输入框执行如下指令,即可实现字符串及中文粘贴
adb shell input keyevent 279
# or 
adb shell input keyevent KEYCODE_PASTE

2.需输入中文字符串情况

描述: 在使用 adb shell input text "中文" 中文时,往往是不行的手机输入行没有任何显示,且命令行还报错,所以为了解决此问题此处作者使用国外大佬开发的一款工具 ADBKeyboard.apk 来实现自定义中文字符的输入。

什么是 ADBKeyBoard? 有何作用?

描述: 通过ADB的Android虚拟键盘输入, ADBKeyBoard它是一个虚拟键盘,它接收来自系统广播意图的命令,您可以使用adb发送文本输入。

项目地址:https://github.com/senzhk/ADBKeyBoard


安装方式:

  • 源码编译: 此种方便较为繁琐,需要自行准备对应边缘构建环境,若你有安全方面的顾虑请使用此种方式。

# Get source Code
git clone https://github.com/senzhk/ADBKeyBoard.git && cd ADBKeyBoard

# Set Android SDK location
export ANDROID_HOME=$HOME/Android/Sdk or edit file local.properties

# Build and install: 
./gradlew installDebug
  • APK成品:此种方式较为简单,使用作者提供的APK正式包进行安装。

# Download apk
wget https://github.com/senzhk/ADBKeyBoard/blob/master/ADBKeyboard.apk
# Install apk
adb install ADBKeyboard.apk
ebdda769ae585cfd0b28fd3dd08440a5.png
weiyigeek.top-使用命令安装ADBKeyboard到手机图

温馨提示:若无法下载的朋友请关注公众号回复【ADBKeyBoard】即可获取作者已下载的【ADBKeyboard.apk】,若担心安全问题建议自行编译构建哟。


如何使用 ADBKeyBoard?

Step 1.首先,需要切换掉手机中的默认输入法为 ADBKeyBoard,此处以华为手机为例。

# 使用 adb 启用 ADBKeyBoard 
adb shell ime enable com.android.adbkeyboard/.AdbIME

# 切换 ADBKeyBoard 虚拟键盘
adb shell ime set com.android.adbkeyboard/.AdbIME   

# 切换回原始虚拟键盘
adb shell ime set com.nuance.swype.dtc/com.nuance.swype.input.IME  
# adb shell ime set com.baidu.input_huawei/.ImeService

# 显示可用的虚拟键盘
adb shell ime list -a  

# 重置虚拟键盘
adb shell ime reset

执行结果:5c83e52a6d695b899cdad2f2798f97f1.png

如不生效请使用手动方式启用切换,此处作者以小米手机为例:点击设置->搜索输入法->输入法管理->启用ADBKeyBoard->回到上一页点击【当前输入法】-> 切换为ADBKeyBoard 即可。

cfd213ff47c99844c2916d9bde1aaad9.png
weiyigeek.top-小米手机输入法切换为ADBKeyBoard图

Step 2.其次,参考官网中 adb 使用此模块的示例演示。

# 1.Sending text input (base64) if (1) is not working.
# * For Mac/Linux, you can use the latest base64 input type with base64 command line tool:
adb shell am broadcast -a ADB_INPUT_B64 --es msg `echo -n '你好嗎? Hello?' | base64`

# * Sample python script to send b64 codes (provided by sunshinewithmoonlight):
import os
import base64
chars = '的广告'
charsb64 = str(base64.b64encode(chars.encode('utf-8')))[1:]
os.system("adb shell am broadcast -a ADB_INPUT_B64 --es msg %s" %charsb64)

# 2. Sending keyevent code  (67 = KEYCODE_DEL)
adb shell am broadcast -a ADB_INPUT_CODE --ei code 67

# 3. Sending editor action (2 = IME_ACTION_GO)
adb shell am broadcast -a ADB_EDITOR_CODE --ei code 2

# 4. Sending unicode characters
To send 😸 Cat
adb shell am broadcast -a ADB_INPUT_CHARS --eia chars '128568,32,67,97,116'

# 5. Send meta keys
# To send Ctrl + A as below: (4096 is META_CONTROL_ON, 8192 is META_CONTROL_LEFT_ON, 29 is KEYCODE_A)
adb shell am broadcast -a ADB_INPUT_TEXT --es mcode '4096,29' // one metaState.
# or
adb shell am broadcast -a ADB_INPUT_TEXT --es mcode '4096^+^8192,29' // two metaState.
# To send Ctrl + V , 实现粘贴
adb shell am broadcast -a ADB_INPUT_TEXT --es mcode '4096,50'

# 6. CLEAR all text (starting from v2.0)
adb shell am broadcast -a ADB_CLEAR_TEXT

温馨提示: 如果你是在Windows系统上,我们可以使用PowerShell提供的字符串转换为base64模块即可, 例如,当我们使用命令的方式通过 ADBKeyBoard 将要输入中文字符串传到安卓手机时:

$str=[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("欢迎大家访问作者技术站点【https://weiyigeek.top】"))
adb shell am broadcast -a ADB_INPUT_B64 --es msg $msg

温馨提示: 在PowerShell开发中如果要在 UTF-16LE(Unicode)或 ASCII 之间进行转换,请将 [Text.Encoding]::Unicode[Text.Encoding]::ASCII 替换为 [Text.Encoding]::UTF8 分别。

android KeyEvent Code 参考地址: http://developer.android.com/reference/android/view/KeyEvent.html

亲,文章就要看完了,不关注一下【全栈工程师修炼指南】吗?

3.项目实战

描述: 有了前面扫盲小节,相信看友应该能明白作者的意图了,作者使用adb工具并通过手机开发者中开启USB调试,让程序进行模拟点击, 需提前获取要点击的 x,y 坐标(这也是我们为啥开启指针位置的原因),包括打开编辑框、, 以及输入字符串,若要输入中文则必须要安装ADBKeyboard工具以及切换键盘,然后根据购物直播间的口令,进行循环输入即发送。

废话不多说,此处作者使用 PowerShell 编写了一个小脚本,需要完整脚本请关注作者后回复【adb工具输入实践】关键字。

6951b5892521a5646d95c23d5d62c997.png

3f9373839006bfa1e7fd6987609b9c11.png

本文至此完毕,更多技术文章,尽情关注作者公众号!

原文地址: https://blog.weiyigeek.top

如果此篇文章对你有帮助,请你将它分享给更多的人! 

8037f7592871b56dfdd05e3e93459465.gif

c3a3b86a52065bdcfebb2768bc5a7b22.png 学习书籍推荐 往期发布文章 0abbdfff1231d2e2a752f8b27da3cc40.png

 专栏推荐  

  • 🔥【最新】从零开始:快速在国产操作系统中搭建高可用K8S(V1.28)集群落地实践

  • Ops实践 | 从零开始,搭建云原生环境下企业监控预警可视化平台

  • 网安学习 | Kail安全渗透测试系统之【主机存存活及指纹探测】工具学习实践

  • 🔥【必备】网络安全攻击防护及等级保护(过保)实践

  • 🚀【实战】企业持续化集成与交付 Jenkins 系列学习实践

  • 🚀【实战】企业资源系统监控预警 Prometheus 系列学习实践

  • 🌟【学习】前端开发学习之路指南(开发入门知识)

  • 🌟【学习】数据库 Redis 运维到删库指南(dba入门知识)

  • 📔【书籍】计算机科学导论学习笔记(计算机基础知识)

欢迎长按(扫描)二维码 取更多渠道哟!

f83f88ce46a1b7cc1ea20b791c5b2086.gif

欢迎关注 【全栈工程师修炼指南】(^U^)ノ~YO

作者微信【weiyigeeker】,拉你一起学习交流进步吧!

df28c7da73439b39a6f5472ee2e32e1d.jpeg  6a047aeb58f9aa9014c0781cd131cd55.png

温馨提示:由于作者水平有限,本章错漏缺点在所难免,希望读者批评指正,若有问题或建议请在文章末尾留下您宝贵的经验知识,联系邮箱地址[master@weiyigeek.top]或关注公众号[全栈工程师修炼指南]留言。

0c90a6790950dcf7bdd4de1e9c58f1ae.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/133257.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AICFD案例教程】进气歧管分析

AICFD是由天洑软件自主研发的通用智能热流体仿真软件&#xff0c;用于高效解决能源动力、船舶海洋、电子设备和车辆运载等领域复杂的流动和传热问题。软件涵盖了从建模、仿真到结果处理完整仿真分析流程&#xff0c;帮助工业企业建立设计、仿真和优化相结合的一体化流程&#x…

【那些反爬和反反爬】xpath根据兄弟节点定位元素

其实这篇不涉及什么高大上的反爬&#xff0c;但是实在不知道要把这篇文章归类到哪里&#xff0c;就直接先扔这里吧。 先吐槽一句&#xff1a;萌娘百科绝对是我再也不想爬第二次的网站。 第二句&#xff1a;&#xff08;真理&#xff09;把网站弄得越乱越让人摸不着头脑&#…

【2024提前批/秋招笔试汇总2】——大疆-嵌入式软件-2023.08.06

一、 单选题&#xff08;40分&#xff09; 1. 以下关于GPU的特点描述不准确的是&#xff1a; A.GPU无法使用共享内存结构&#xff0c;提高通信速度 B.GPU的并行数据处理可以大幅度提高运算能力 C.GPU使用高速全局内存可以进一步提升运算速度 D.GPU的计算能力比CPU强 2.下列关…

技术架构-单机架构

前言 从今天开始系统学习 Docker 课程&#xff0c;总结下 Docker 是什么&#xff0c;用来做什么&#xff0c;架构是怎样的。 注&#xff1a;&#xff08;1&#xff09;当浏览器 / APP访问服务器时&#xff0c;如果服务器适用的时 http 协议&#xff0c;那么默认端口时80&#…

Learn runqlat in 5 minutes

内容预告 learn X in 5 系列第一篇. 本篇主要介绍进程时延统计方式和 rawtracepoint. runqlat "高负载场景下应用为何卡顿", "进程 A 为什么得不到调度". 当我们在工作生活中产生这样的疑问, 目标进程的调度时延是一个不错的观测切入点. runqlat 可以帮…

CentOs7 NAT模式连接网络

1.配置动态网络 1.1 检查主机网卡配置 检查主机的网络设置 进入控制面板&#xff0c;找到网络共享中心 查看适配器是否都已经开启 1.2 设置虚拟机的网络配置 打开虚拟机网络配置设置&#xff0c;对网卡VMnet8 进行设置 记住网关 全部选择应用&#xff0c;确定 1.3 设置…

数据结构:树的基本概念(二叉树,定义性质,存储结构)

目录 1.树1.基本概念1.空树2.非空树 2.基本术语1.结点之间的关系描述2.结点、树的属性描述3.有序树、无序树4.森林 3.树的常考性质 2.二叉树1.基本概念2.特殊二叉树1.满二叉树2.完全二叉树3.二叉排序树4.平衡二叉树 3.常考性质4.二叉树的存储结构1.顺序存储2.链式存储 1.树 1.…

PyTorch技术和深度学习——三、深度学习快速入门

文章目录 1.线性回归1&#xff09;介绍2&#xff09;加载自由泳冠军数据集3&#xff09;从0开始实现线性回归模型4&#xff09;使用自动求导训练线性回归模型5&#xff09;使用优化器训练线性回归模型 2.使用torch.nn模块构建线性回归模型1&#xff09;使用torch.nn.Linear训练…

文件改名:避免繁琐操作,利用筛选文件批量重命名技巧优化文件管理

在我们的日常生活和工作中&#xff0c;我们经常需要处理大量的文件&#xff0c;从文档、图片到音频和视频等。在这些情况下&#xff0c;一个高效的文件管理策略至关重要。文件重命名的必要性主要体现在两个方面。首先&#xff0c;对于大量文件&#xff0c;手动进行重命名不仅费…

邻接矩阵储存图实现深度优先遍历(C++)

目录 基本要求&#xff1a; 图的结构体&#xff1a; 图的构造&#xff1a; 图的深度优先&#xff08;DFS&#xff09;&#xff1a; 图的打印输出&#xff1a; 完整代码&#xff1a; 测试数据&#xff1a; 运行结果&#xff1a; 通过给出的图的顶点和边的信息&#xff0c…

Sprint Boot 学习路线 4

微服务 Spring Microservices是一个框架&#xff0c;它使用Spring框架更容易地构建和管理基于微服务的应用程序。微服务是一种架构风格&#xff0c;其中一个大型应用程序被构建为一组小型、独立可部署的服务。每个服务具有明确定义的职责&#xff0c;并通过API与其他服务通信。…

S7-1200PLC和SMART PLC开放式以太网通信(UDP双向通信)

S7-1200PLC的以太网通信UDP通信相关介绍还可以参考下面文章链接: 博途PLC开放式以太网通信TRCV_C指令应用编程(运动传感器UDP通信)-CSDN博客文章浏览阅读2.8k次。博途PLC开放式以太网通信TSENG_C指令应用,请参看下面的文章链接:博途PLC 1200/1500PLC开放式以太网通信TSEND_…

Flink之Table API SQL连接器

连接器 Table API & SQL连接器1.概述2.支持连接器 DataGen连接器1.概述2.SQL客户端执行3.Table API执行 FileSystem连接器1.创建FileSystem映射表2.创建source数据源表3.写入数据4.解决异常5.查询fileTable6.查看HDFS Kafka连接器1.添加kafka连接器依赖2.重启yarn-session、…

vue.cli 中怎样使用自定义的组件

目录 创建自定义组件 注册并使用自定义组件 全局注册自定义组件 使用 Props 传递数据 总结 前言 在Vue CLI中使用自定义组件是构建交互式和模块化Web应用的重要一环。Vue CLI为开发者提供了使用自定义组件的灵活性和简便性。通过Vue CLI&#xff0c;你可以创建、注册和使…

【算法练习Day45】最长公共子序列不相交的线最大子数组和

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 最长公共子序列不相交的线最…

开发者眼中的向量数据库应用领域

目录 引言向量数据库概念向量数据库优势应用领域亚马逊云科技向量数据库向量数据库的使用步骤最后 引言 随着人工智能和大数据技术的快速发展&#xff0c;越来越多的技术倾向于数据存储方面&#xff0c;数据库领域也随着人工智能和大数据的发展而发展&#xff0c;尤其是向量…

月销破30万辆后,比亚迪整了波大的

最近乘联会公布了 2023 年 10 月新能源乘用车厂商销量榜单。 其中最为亮眼犹如鹤立鸡群的榜首&#xff0c;没错依然是我们熟悉的那个迪子&#xff01; 单月销量超 30 万辆&#xff0c;相较去年同期暴涨 38.4%&#xff0c;创下了比亚迪有史以来新高。 同时也成为了国内首个月销…

PEFT概述:最先进的参数高效微调技术

了解参数高效微调技术&#xff0c;如LoRA&#xff0c;如何利用有限的计算资源对大型语言模型进行高效适应。 PEFT概述&#xff1a;最先进的参数高效微调技术 什么是PEFT什么是LoRA用例使用PEFT训练LLMs入门PEFT配置4位量化封装基础Transformer模型保存模型加载模型推理 结论 什…

Java学习 9.Java-数组 讲解及习题

一、数组的定义与使用 1.数组的基本概念 1.1 为什么要使用数组 数组是最简单的一种数据结构 组织一组相同类型数据的集合 数据结构本身是来描述和组织数据的 数据加结构 1.2.1 数组的创建 代码实现 new int 可省略&#xff1b; char[] chars{a,b,c};//定义一个整形类型数…

在线免费语音克隆工具,1分钟,复制你的声音

hi&#xff0c;同学们&#xff0c;我是赤辰。玩自媒体这么多年&#xff0c;总结出凡是用自己的声音做短视频&#xff0c;既有识别度&#xff0c;也更容易上热门&#xff0c;但是录制音频的艰难&#xff0c;试过的都知道&#xff0c;市面上也有很多克隆工具&#xff0c;但是基本…