用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>

keyevent指的是android对应的keycode,比如home键的keycode=3,back键的keycode=4.

具体请查阅 android keycode详解

然后使用的话比较简单,比如想模拟home按键:

adb shell input keyevent 3
请查阅上述文章,根据具体keycode编辑即可。

不仅有滑动的操作,还有其他的键的操作。更多参考

adb shell input keyevent 3 home键返回
adb shell input keyevent 4 返回键

关于tap的话,他模拟的是touch屏幕的事件,只需给出x、y坐标即可。

此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写一个微信跳一跳外挂,瞬间称霸朋友圈

相关内容

    暂无相关文章

评论关闭