一对一直播脚本技术实现原理。脚本所做的只是简化用户操作,实现自动化操作的一个工具。这里分析的是脚本程序:保护生态、高山流水
技术选型
一对一直播脚本,本质上是打开平台后,采用自动化技术,给平台的用户发送消息,模拟一个用户操作的过程。其中脚本需要做的大致过程如下:
- 找到平台的用户,并自动打开聊天窗口
- 从一个文件中随机找到一句话
- 将随机到的话发送给用户
要实现上方的功能,有多种方式,例如采用root,但平台可能会检测机器是否已经被root,从而限制某些功能。那么最保险的一种就是采用无障碍功能去实现。(实际上即便是采用无障碍,也有一定的被检测风险,平台可以判断机器无障碍是否开启)
由于平台会随时更新且会不断的调整策略,普通的Android原生开发语言,java、kotlin 就无法使用,故而只能采用能够随时、快速的更新的 Autojs
,实际上 autojs 是一款 github 开源的开发框架。优点就是可以加载执行 js 文件,通过 js 这类脚本语言,可以适应平台的更新节奏。
用户肯定不想每天都下载一个更新包去一台台机器安装
脚本执行流程
通过开启无障碍,那么 App 已经能够获取 Android 手机上所有的界面元素。
此时只需要找到指定的界面元素进行点击即可。
首先找到输入框:
if (id("input_et").findOne(5000)) {
}
查找到界面 id 为 input_et
的元素,当找到之后:
id("input_et").findOne(5000).setText(String(回复内容1[1]))
将内容自动的输入到框框中,接下来找到按钮并进行点击:
if (id("one_key_send_tv").text("一键群发").exists()) {
}
上方就是查找到界面上 id 为 one_key_send_tv
的元素。如果它的文字内容为: 一键群发
则执行后续内容。
找到按键元素后,接下来要点击这个按键:
if (id("one_key_send_tv").text("一键群发").exists()) {
if (cj = id("one_key_send_tv").text("一键群发").findOne(5000)) {
try {
cj.click();
sleep(2000)
} catch (error) {
}
}
}
cj.click()
就是点击了这个按钮。虽然是在代码中执行的,但对于平台 app 来说,它会认为这是用户手动点击的按钮,随后会将消息进行发送
Android java层原理
脚本语言采用的是 js。js是一种动态语言,执行时,对象会和java层的对象一一映射,通过 hook,实现调用,例如,上方 js 代码的 id("xxx")
,对应 java层就是:findViewById()
方法 ,通过映射方法,从而实现功能
实现分析
前面提到了几个脚本大致的执行过程。
这里不得不提安卓无障碍服务,无障碍可以做到监听界面上的点击、拖动、更新等信息。具有极高的权限和非常丰富的功能。虽然不及 root 权限,但也比普通用户高非常非常多
如果一款病毒 app 获取无障碍服务,可以直接劫持操控你的手机
但是一个功能是好是坏,取决于怎么用。借助无障碍服务,可以给手机自动化执行某些任务
功能完善
上面伪代码是程序大致的执行过程。其中还涉及到比较多的知识点,比如执行异常怎么办?文本的读取、解析、随机发送等等。
技术交流:wx_zhibo8888
可以找我测试试用脚本
自助 JI 活