python调用adb脚本来实现群控安卓手机初探
本帖最后由 打字的小强 于 2018-11-28 10:05 编辑一直想弄个真机群控,vnc监控,要用脚本语言控制手机好像只能用shell类似的adb脚本了。然后弄个vnc监控什么的。已经开始弄adb群控脚本了,自己只懂点python,并不会底层的什么东西,后期肯定要改底层的东西,用到c之类的语言了。搜集各种资料试了一下,已经实现了两个功能,挺有意思的。初步分享下adb群控原理
# !/usr/bin/python
# -*- coding:utf-8 -*-
import os
runapp_name = "com.tencent.mobileqq/.activity.SplashActivity"
def getDevicesAll():
#获取所有的设备列表
devices = []
try:
for dName_ in os.popen("adb devices"):
if "\t" in dName_:
if dName_.find("emulator") < 0:
devices.append(dName_.split("\t"))
devices.sort(cmp=None, key=None, reverse=False)
except:
pass
print("设备名称: %s 总数量:%s台" % (devices, len(devices)))
return devices
def find_top_app(devices):
# 循环输入顶层应用
for dName in devices:
try:
out = os.popen('adb shell "dumpsys activity | grep "mFocusedActivity""').read()
print(dName+"的当前顶层应用是:"+out)
except:
print(dName + "关闭失败")
def runtest(devices):
# 打开应用
for dName in devices:
try:
os.popen("adb -s " + dName +" shellam start -n "+runapp_name)
print("启动成功")
except:
print(dName+"打开失败")
if __name__=="__main__":
while True:
try:
devices = getDevicesAll()
except:
print("获取设备出错")
res = input("输入1查看当前的顶层app;2启动qq:")
if int(res)==1:
try:
find_top_app(devices)
except:
print("启动错误")
elif int(res)==2:
try:
runtest(devices)
except:
print("启动错误")
浯茗仔仔 发表于 2018-11-28 13:57
想问下楼主怎么用设备号区分手机的,adb devices获取的不都是一样的么,我以前公司做个这个,但是是同事搞 ...
参考帖子:https://www.aliyun.com/jiaocheng/26320.html 。每个设备都有一个设备id。 yc19951005 发表于 2018-11-28 10:06
这个东西主要是干嘛的? 楼主能否说的简单一点,是利用Python通过adb命令实现人为的打开app什么的操作吗?
对啊,使用一个命令就可以打开N多手机的 app或者其他操作 这个东西主要是干嘛的? 楼主能否说的简单一点,是利用Python通过adb命令实现人为的打开app什么的操作吗? 目前只是简单控制,不过很有意思,希望楼主继续更新! 这是远程挖矿机器人专用的么 吾爱好地方 发表于 2018-11-28 10:13
目前只是简单控制,不过很有意思,希望楼主继续更新!
关键是没钱没项目,弄着玩玩{:1_937:} yunbaobei 发表于 2018-11-28 10:18
这是远程挖矿机器人专用的么
什么远程挖矿,,并不是的,就是封装命令通过数据线或者wifi控制一群手机 创意很好{:1_919:} adb 不行的,不稳定,我之前也是尝试用E语言写了个调用adb的,adb不稳定,会崩溃 队友呢? 发表于 2018-11-28 10:54
adb 不行的,不稳定,我之前也是尝试用E语言写了个调用adb的,adb不稳定,会崩溃
可能控制的手机太多了吧,那层主有何高见使用其他的办法?