用python写一个微信跳一跳外挂,瞬间称霸朋友圈,python朋友圈,12月28日,微信宣
用python写一个微信跳一跳外挂,瞬间称霸朋友圈,python朋友圈,12月28日,微信宣
12月28日,微信宣布,小程序增加了新的类目:小游戏,同时上线小游戏你们跳的再好,在毫无心理波动的程序面前都是渣渣。
刚刚会python的小白想玩怎么办?
下有详细的教程,哈哈,包教会不收任何的费用。
感受一下被支配的恐惧吧:
使用工具
1.python3.6
2.adb
3.安卓手机(版本4.4+)
使用原理
=== 思路 ===
核心:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标,
根据两个点的距离乘以一个时间系数获得长按的时间
识别棋子:靠棋子的颜色来识别位置,通过截图发现最下面一行大概是一条直线,就从上往下一行一行遍历,
比较颜色(颜色用了一个区间来比较)找到最下面的那一行的所有点,然后求个中点,
求好之后再让 Y 轴坐标减小棋子底盘的一半高度从而得到中心点的坐标
识别棋盘:靠底色和方块的色差来做,从分数之下的位置开始,一行一行扫描,由于圆形的块最顶上是一条线,
方形的上面大概是一个点,所以就用类似识别棋子的做法多识别了几个点求中点,
这时候得到了块中点的 X 轴坐标,这时候假设现在棋子在当前块的中心,
根据一个通过截图获取的固定的角度来推出中点的 Y 坐标
最后:根据两点的坐标算距离乘以系数来获取长按时间(似乎可以直接用 X 轴距离)
ADB
首先碰到的就是什么是adb。
Android Debug Bridge
:Android操作系统与桌面×××间沟通的一个命令列工具。
:可以在×××上通过命令达到操作手机的效果。
下载
在许多Android用户多次呼吁之后,Google终于将ADB和Fastboot作为单独的文件提供给用户下载。以前这些文件只包含在大尺寸的Android SDK或Android Studio当中提供给用户,现在这种变化意味着它们现在比以往更快,更容易执行和侧载。
这样就免去了下载一个600M的Android SDK,这也是坑了我。
下载之后将其添加到环境变量中去。
手机打开开发者,USb调试,用数据线连接到×××上,如果手机界面显示USB授权,请点击确认。
在cmd输入
adb
就可以使用了,本次使用的命令和常用的几个命令
本次使用到的命令,先了解这写就可以应对
adb start-server 开启进程
adb decives 找到设备
adb shell screencao -p /sdcard/i.png 对手机进行截屏保存到sdcard的目录下面。
adb pull /sdcard/i.png . 将sdcard目录下的i.png传送到当前目录下面
adb pull /adcard/i.png D://
注意这些命令在adb下 而不是在shell下面。
adb shell screencap -p /sdcard/1.png adb pull /sdcard/1.png .
用adb工具点击屏幕蓄力一跳。
adb shell input swipe x y x y time
遇到的问题
最开始一直没有检测到手机。然后用360助手排查问题。找到开发者。就是连不上。最可气的就是硬件的问题吧。后来换了一个数据线。解决端口被360手机助手占用。
进程中退掉360 手机助
使用安卓模拟器上面的微信的版本不支持(可能是我忘了更新了吧!)。暂时还是用到了真机上的微信。找来多年不用的安卓机。然后一顿root。
玩了好大一会 ,一个一个测试命令,当玩到
adb shell input swipe x y x y time
这条命令的时候延伸
adb shell input(Android模拟输入),input可以用来模拟各种输入设备的输入操作。
D:\>adb shell input
usage: input ...
input text <string>
input keyevent <key code number or name>
input [touchscreen|touchpad|touchnavigation] tap <x> <y>
input [touchscreen|touchpad|touchnavigation] swipe <x1> <y1> <x2> <y2> [duration(ms)]
input trackball press
input trackball roll <dx> <dy>
具体请查阅 android keycode详解
然后使用的话比较简单,比如想模拟home按键:
adb shell input keyevent 3
请查阅上述文章,根据具体keycode编辑即可。
不仅有滑动的操作,还有其他的键的操作。更多参考
adb shell input keyevent 3 home键返回
adb shell input keyevent 4 返回键
此x、y坐标对应的是真实的屏幕分辨率,所以要根据具体手机具体看,比如你想点击屏幕(x, y) = (250, 250)位置:
adb shell input tap 250 250
关于swipe同tap是一样的,只是他是模拟滑动的事件,给出起点和终点的坐标即可。例如从屏幕(250, 250), 到屏幕(300, 300)即
adb shell input swipe 250 250 300 300
//滑动
adb shell input swipe 100 100 200 200 300 //从 100 100 经历300毫秒滑动到 200 200
//长按
adb shell input swipe 100 100 100 100 1000 //在 100 100 位置长按 1000毫秒
特别注意下 swipe后面跟的有时间的参数[duration(ms)],这个与手机的版本的问题有关。
input命令是用来向设备发送模拟操作的命令:
因为版本不同,input命令也有所不同
以下为Android 4.0的input命令:
usage:input text <string>
input keyevent <key code number or name>
input tap <x> <y>
input swipe <x1> <y1> <x2> <y2>
以下是Android 4.4+的input命令:
usage: input ...
input text <string>
input keyevent <key code number or name>
input [touchscreen|touchpad|touchnavigation] tap <x> <y>
input [touchscreen|touchpad|touchnavigation] swipe <x1> <y1> <x2> <y2> [duration(ms)]
input trackball press
input trackball roll <dx> <dy>
明显两个版本的input命令是有差异的,也就是说在版本是4.4以下的情况下。是不能用swipe后面跟时间的。在使用的时候一定要记得查询清楚所使用的Android版本!
(我拿到手机后就root了,然后一看版本是4.3的,拿着4.3版本的手机心中飞过***,好的一点是还有一个手机,就升级一下版本,这样换手机在接着搞。其他就不会出现什么错误了)
小结
adb在这次所起到的作用是什么?
1.简单来说截取跳一跳中的图片(用python分析计算)
2.精确执行命令,包括按压的时间,按压的间隔(python通过调用cmd能做到)
小编有自己的python学习交流群,大家如果想要来学习的话,可以加下:588+090+942不管你是小白还是大牛,小编都欢迎,而且小编会在群里面不定期分享干货,包括小编自己整理的一份2018年最新学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴
用python写一个微信跳一跳外挂,瞬间称霸朋友圈
相关内容
- 暂无相关文章
评论关闭