教你用测试的技术玩羊了个羊,如何秒杀一众好友
最近刷爆朋友圈的羊了个羊,因为其比较简单的界面、操作和“骚浪贱”的声音,导致这个游戏的服务器经常处于崩溃状态。
但是真的很上头!
今天她突然跑来问我,为啥有人过关20万次,我怎么就才过去一次也?
乍一听,我都愣住了:过关20万次?
就算一分钟过关一次,一天也才1440次,这得好几个月啊!所以大概率是刷的吧!然后我就拿出了作为测试工程师的手艺开始试一下:
1、首先启动我们测试人的抓包神工具——Charles。
当然刚启动的时候,没有任何数据可以显示出来。
因为需要抓取微信小程序的数据,所以需要设置一下网络代理:通过【Proxy】菜单下面的【Proxy settings】设置代理参数:
打开代理设置界面后,做出如下设置,其实也就是默认就好:
2、设置连接手机进行抓包
将电脑的Charles作为代理服务器,设置手机连接电脑网络:此处以iPhone手机为例。
在iPhone的设置 -> 无线局域网 -> 局域网信息 -> 配置代理 -> 手动中配置代理,服务器输入框中填写Charles所在的电脑的IP地址(我的就是192.168.1.2),端口输入框中填写Charles的代理端口(Charles默认就是8888).
设置好了之后,Charles就可以抓取手机上的应用程序的数据包了。
3、启动羊了个羊微信小程序
进入游戏,然后玩儿一局游戏,然后再进入排名页面,然后进行数据抓包。
基本上可以抓到如下所示的一些页面数据:
启动和登录游戏:
然后会得到以下的数据:
{"err_code":0,"err_msg":"","data":{"openid":"_0008ITfjXnwxgMbJT0K2RrlkyvqzpcZOl47","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTQ2MjIxODksIm5iZiI6MTY2MzUxOTk4OSwiaWF0IjoxNjYzNTE4MTg5LCJqdGkiOiJDTTpjYXRfbWF0Y2g6bHQxMjM0NTYiLCJvcGVuX2lkIjoiIiwidWlkIjoxMDAwMDEsImRlYnVnIjoiIiwibGFuZyI6IiJ9.ryqijS0H4eviX49tHMJtDL6H9qN1kqgoUr3Z1uN4U5g","uid":100001}}
然后玩儿一局游戏通关的话,可以抓取到如下所示的数据:
可以得到以下的数据:
{"err_code":0,"err_msg":"","data":0}
4、分析接口数据
经过分析啊,我们都知道,这个游戏由2关组成,在开始游戏时会请求每关的基本信息(包括卡牌类型代码和卡牌组数),然后将3倍卡牌放入一个array中随机打乱,再放入地图指定位置,以达到随机关卡不给活路的目的……
地图id为80001(第一关)和90016(第二关,每天不同)
所以要想直接直接过关的基本思路就是:
首先,修改第二关的请求响应,将block内容改为和第一关一样(或改成同一种卡片)
其次,修改第二关的请求响应,将blockTypeData改掉,最终生成了全白的图片。
再次,获取t值,直接发送通关请求
最后,无限获取道具
大家也可以去看一下大神网友提供的比较完整的通关接口文档和说明:
http://yangyang.apifox.cn/api-40162839
5、下面将以上通关数据使用postman进行测试
将上面得到的通过接口请求数据添加到postman中,并通过一次测试验证一下:
然后将这个过程使用postman的runner功能进行大批量运行,
最后,利用这个技术,给我老婆刷了一下,刷完之后她查看的羊了个羊朋友圈排名:
上图是刷新前排名。下面看一下刷新后排名:
呼!终于感觉心情好一点了!
学习更多接口测试技术,请继续关注哦~