当你想抢王者聊天频道的皮肤碎片红包,或者想和小姐姐(小哥哥)开游戏的时候。可以使用python自动化工具,进行自动化加入开黑房间(一般小姐姐开黑会开语音,然后就会有大佬带,然后就容易上分,哈哈哈)。然后可以喝个奶茶,看个电影~一边等待,加入上分的队伍(所需工具下载链接详见文章尾部)
B站视频传送门:攻城狮晚的个人空间_哔哩哔哩_Bilibili
如何快速和小姐姐五排开黑~_哔哩哔哩_bilibili
目录
1、下载安装ADB工具包和驱动
2、下载安装Andriod SDK
3、UiAutoMatorViewer下载安装
4、测试
5、最终具体Python代码实现
6、参考文献
Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具
下载工具包后,解压到英文路径后,添加系统环境变量
下载驱动之后,点击安装驱动
AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载
我是win10系统,所以下载了这个
下载装好之后,会自动运行 SDK Manager。如果没有的话,开始菜单或者安装目录找一下,运行就好。
测试了一下安装还挺快的,我安装的是这几个
1、下载jdk1.8安装(据说其他版本使用UiAutoMatorViewer有问题):
可以先查看jdk(Java Development Kit——Java开发工具包)版本。开始菜单输入cmd,打开命令行窗口,输入java -version查看:
如果没有jdk的话,可以从如下网址下载安装
https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html
2、下载UiAutoMatorViewer
https://dfenghuoyunji.jb51.net/201904/tools/uiautomatorviewer.rar
下载后,将里面的uiautomatorviewer.jar文件复制到之前安装的sdk的 tools/lib目录下
如果不放心的话,可以将之前的uiautomatorviewer.jar 备份一下
Sdk目录下的tools目录中,uiautomatorviewer.bat可以备份下,然后最后一行Dcom.android.uiautomator.bindir=后接adb实际存放路径。
我放在了D:\program files\Android\abd下
此时即可双击运行uiautomatorviewer.bat,打开uiautomatorviewer
1、使用获取截图png和uix文件,保存到当前文件夹:
adb shell screencap -p /sdcard/sc.png
adb pull /sdcard/sc.png
adb shell uiautomator dump /sdcard/sc.uix
adb pull /sdcard/sc.uix
2、使用uiautomatorviewer工具查看能否解析成功
经过测试,手机桌面是可以解析的
但是王者游戏界面无法解析
所以准备使用百度文字识别api,进行操作,大致思路如下:
可以免费领取百度文字识别api的额度,如下网址:
https://cloud.baidu.com/doc/OCR/s/9k3h7xuv6#通用文字识别(高精度含位置版)
如果没有申请的话,默认是收费的,含位置信息的,最便宜的大概0.01元/次调用
里面有相应的调用方式参考代码示例
Token的话,可以参考这个文档,需要先创建应用
https://ai.baidu.com/ai-doc/REFERENCE/Bkru0l60m
作者还试用了iOCR通用版,就是你可以选择需要识别的位置,指定参考点。但是经过测试,无法满足需求。
Adb调试,使用的是华为的鸿蒙手机(百度了一下,鸿蒙系统居然不是安卓了,不过应该是为了通用,adb工具还是可以进行调试的)。
连接手机后,电脑端会跳出华为手机助手,验证过后。Cmd中使用adb截图。如果截图不了的话,华为手机助手会提示再次验证。验证通过后,即可使用adb命令
Cmd中截图,查看没问题后,使用python脚本进行测试。其中点击屏幕命令如下:
adb shell input tap 522 1120(x y)
import os
import time
import base64
import shutil
import requests
from PIL import Image
def Myexec(Tstr):
# 自定义执行命令函数,方便调试
os.system(Tstr)
# client_id 为官网获取的AppKey, client_secret 为官网获取的SecretKey
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【你的AppKey】&client_secret=【你的SecretKey】'
response = requests.get(host)
if response:
response = response.json()
token = response["access_token"]
print(response)
print(token)
# 可以将token保存为文件,需要的时候再取出来,这里不保存也能用,所以先不保存。
# 默认过期时间30天["expires_in"]
# 网络图片文字识别(含位置版)0.03一次,无折扣。能否检测,暂未尝试
# 通用文字识别(高精度版)0.03一次,多了有折扣
# request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic" # 可以检测出♀
# 通用文字识别(高精度含位置版)0.04一次,多了有折扣
# request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate" # 可以检测出♀
# 通用文字识别(标准版含位置)0.01一次,多了有折扣
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general" # 可以检测出♀
# 通用文字识别,不含位置的0.005一次,多了有折扣。总结了一下,还是需要位置比较好,不包含位置的,不方便点击。
spic = 'sc.png'
dpic = "tmp.png"
abd1 = 'adb shell screencap -p /sdcard/'+spic
abd2 = 'adb pull /sdcard/'+spic
# adb shell screencap -p /sdcard/sc.png
# adb pull /sdcard/sc.png
testCount = 100 # 多少次循环没有找到合适的队伍及停止
testN = 0 # 当前截屏识别次数
clickOk = 0 # 进入队伍的标志
while testN70 and exY<90 and exX>110 and exX<128: # 如果满足条件,则点击,进入房间。
# 不同手机分辨率下,有可能不一样。这个需要具体测试 (我的是2340*1080px)
print("点击位置,x:%s,y:%s"%(thisPww,thisPhw))
# adb shell input tap 540 1104
Myexec("adb shell input tap "+str(thisPww)+" "+str(thisPhw))
break
if "全队" in tWords or "召集" in tWords: # 判断是否已经进入房间
clickOk = 1
print("进入房间成功")
if clickOk == 1:
# 如果已经进入房间,退出循环
break
经过测试,一般等待几分钟,就会进入想要的房间啦~再也不用一直盯着屏幕啦~其实还有很多功能,比如自动抢皮肤碎片啦、做任务啦,这些就需要大家自己去实现啦~
所用工具下载地址:链接:https://pan.baidu.com/s/1ckE8mj_eWhVatAFoV8E3Mg
提取码:lkkz