🎊 实现自动化脚本的技术方案总结(从原理到实践)

实现自动化脚本的技术方案总结(从原理到实践)

目前市面上有很多自动化脚本框架,其原理也各不相同,本人在自动化脚本领域有丰富的经验,从技术角度总结了各种技术的原理和其优缺点,供大家参考。

一、基于adb的技术方案

ADB(Android Debug Bridge)是一种用于与Android设备通信的命令行工具,它提供了丰富的命令和功能,能够帮助用户控制和管理Android设备。使用ADB实现自动化脚本的原理,主要是基于模拟用户手势和操作系统命令来执行一系列预定义的操作。

连接设备:首先,需要将Android设备通过USB数据线连接到开发机器上,并确保设备的开发者选项和USB调试已启用。这样,ADB客户端才能与设备上的ADB守护程序进行通信。发送命令:通过ADB客户端发送各种命令到设备上,以模拟用户手势或执行系统操作。例如,可以使用adb shell命令来运行设备上的Unix shell命令,或者使用adb install命令来安装应用程序。模拟用户手势:ADB提供了多种命令来模拟用户的点击、滑动等手势。例如,可以使用adb shell input tap命令来模拟点击屏幕上的某个位置,或者使用adb shell input swipe命令来模拟滑动操作。这些命令的参数需要用户根据实际需求进行设定,如点击的坐标、滑动的起始和结束坐标等。自动化测试:在自动化测试场景中,ADB命令可以用于执行随机的用户界面事件来测试Android应用的稳定性。例如,可以使用adb shell monkey命令来生成一系列随机的用户事件,如点击、触摸、手势等,以模拟用户对应用的真实操作。通过这种方法,可以检测应用在长时间运行或复杂操作下的稳定性和性能表现。处理输出:执行ADB命令后,通常会得到一些输出信息。这些信息可以用于判断命令是否执行成功,或者获取设备的状态信息。例如,可以使用adb shell dumpsys命令来获取设备的系统状态信息,或者使用adb logcat命令来查看设备的日志信息。优点:

兼容性可以,不挑手机。缺点:

容易被检测,一般正常用户不可能在开启adb后的手机中使用。所以只要是开启了adb手机直接封杀不会有任何误杀。目前已经基本被淘汰api不够丰富,功能不够强大,仅能实现点击,滑动等有限的操作和无障碍相比弱很多。需要额外的设备配合,比如pc等。二、基于root的技术方案

基于root权限实现自动化脚本通常意味着你有权限在Android设备上执行更高级别的操作,这些操作通常因为涉及到系统级别的更改或访问受保护的资源而需要root权限。以下是如何基于root权限实现自动化脚本的一些步骤和注意事项。

1. 获取root权限

首先,你的Android设备需要被root。这通常涉及到解锁设备的引导加载程序(bootloader),然后刷入一个支持root的自定义恢复(如TWRP),最后通过恢复刷入一个包含root权限的自定义ROM或SuperSU/Magisk等root管理工具。

2. 使用root权限执行命令

一旦设备被root,你可以通过ADB以root用户身份执行命令。这通常是通过在ADB命令前加上su(切换到超级用户)来实现的。

优点:

功能强大,可以直接拿到系统的最高权限,可以调用系统的绝大部分命令。缺点:

容易被检测,一般正常用户不可能在root后的手机中使用。所以只要是root手机直接封杀不会有任何误杀。目前已经基本被淘汰三、使用无障碍服务

无障碍服务是Android系统提供的一种特殊服务,它允许应用代表用户执行操作,如点击屏幕上的按钮、滑动页面、输入文本等。这些操作对于那些有视力、听力或其他身体障碍的用户尤其有用,同时也广泛用于自动化测试和脚本编写。

定义无障碍服务:

在AndroidManifest.xml中声明无障碍服务,并指定它所需的权限和过滤器。示例配置:

创建服务类:

扩展AccessibilityService类,并实现必要的方法,如onAccessibilityEvent(AccessibilityEvent event)来接收无障碍事件,以及onInterrupt()来处理服务被中断的情况。示例代码:

public class MyAccessibilityService extends AccessibilityService { @Override public void onAccessibilityEvent(AccessibilityEvent event) { // 检查事件类型或条件,执行相应的自动化操作 if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED) { // 示例:模拟返回操作 performGlobalAction(GLOBAL_ACTION_BACK); } } @Override public void onInterrupt() { // 处理服务被中断的情况 } }配置无障碍服务:

在res/xml/目录下创建accessibility_service_config.xml文件,配置无障碍服务的属性。示例配置:

优点:

api丰富,功能强大,可以直接获取ui的层级结构(ui树),操作非常方便,能实现非常精确的操作,甚至直接获取界面上的所有信息。兼容性好,不挑设备,只要android7.0以上就可以。四、使用HID硬件模拟点击操作

使用HID(Human Interface Device,人机接口设备)硬件来实现自动化脚本是一种相对高级且特殊的方法。HID设备通常包括键盘、鼠标、游戏控制器等,它们通过发送特定的信号给计算机或其他设备来模拟用户的输入操作。

选择现成的HID设备:如果只是为了自动化一些简单的操作,可以选择现成的键盘或鼠标,这些设备通常已经能够发送标准的HID信号。构建自定义HID设备:如果你需要更复杂的操作或特定的输入信号,可能需要构建自定义的HID设备。这通常涉及到电子工程和编程知识,你需要设计电路、编写固件,并配置HID描述符来定义设备的功能。确定输入序列:根据你的需求,确定需要模拟的输入序列,比如特定的按键组合、鼠标移动轨迹和点击点等。编写脚本:使用编程语言(如Python、C++等)编写脚本,通过控制HID设备来发送这些输入序列。这可能需要使用到一些特定的库或API来与HID设备通信。测试脚本:在目标设备上测试脚本,确保它能够正确模拟所需的输入操作。优点:

兼容性好,只要支持蓝牙或者otg就可以,只要不是太老的设备都可以兼容。缺点:

需要额外的硬件成本,一个手机配一个硬件,大概10元左右。api不够丰富,功能不够强大,仅能实现点击,滑动等有限的操作和无障碍相比弱很多。五、使用定制ROM来实现自动化脚本

使用定制ROM来实现自动化脚本是一种高效且强大的方法。定制ROM,即对Android操作系统源代码进行修改和重新编译,以适应特定硬件或满足特定需求。在定制ROM中,可以直接内置自动化脚本的能力,无需通过第三方硬件、ADB、root、无障碍服务等手段。

优点:

api丰富,功能强大,可以直接获取ui的层级结构(ui树),操作非常方便,能实现非常精确的操作,甚至直接获取界面上的所有信息。因为可以直接修改操作系统源码,所以是所有方案中功能最强大的,不是之一。不会被任何app检测到,因为可以直接在rom中修改或者添加模块来实现类似无障碍的服务,第三方app不可能检测到。是所有防检测,防风险的终极方案,最牛的方案,不是之一。缺点:

兼容性一般,某些不能解锁的手机可能支持不了。六、总结

从防检测上面来说,只有定制rom是最优方案,可以说从技术层面上来看,三方app是不可能检测到的,而其他方案都可以很容易被检测到。

从功能强大性方面来说,定制rom的功能最强大,因为可以直接修改和增加android的源码,这就有无限的想象空间。而其他方案都局限于手机本身的系统。

从性价比方面来看,无障碍是性价比最高的。

从兼容性方面来看,hid硬件相对来说还可以。

至于adb和root方案基本就放弃吧。有条件的话建议直接上定制rom一劳永逸解决问题,不然选择其方案在被风控后再改用定制rom方案,成本会更高(因为你选择的手机有可能不能解锁,不能定制rom,还需要重新购买手机)。

🎈 相关推荐

雅思考试费用支付全攻略:从报名到退款的完整指南
🏷️ 365dni是什么

雅思考试费用支付全攻略:从报名到退款的完整指南

📅 09-30 👀 5607
[合众] 剧情图文攻略
🏷️ 谁有365bet网址

[合众] 剧情图文攻略

📅 09-24 👀 6658
哥弟(GIRDEAR)旗舰店
🏷️ 谁有365bet网址

哥弟(GIRDEAR)旗舰店

📅 10-27 👀 5123
朋友来借钱,怎样高情商的回答,表示委婉的拒绝
🏷️ 谁有365bet网址

朋友来借钱,怎样高情商的回答,表示委婉的拒绝

📅 10-13 👀 7753
数学长征,确定旋转中心的方法,旋转,图形旋转,两组对应点,所连线段,垂直平分线,交点
荣耀手环Zero SS版本评测:外观别致细节需优化
🏷️ 中爱365APP

荣耀手环Zero SS版本评测:外观别致细节需优化

📅 10-15 👀 3317