mitmproxy + python 实现游戏协议测试

Python014

mitmproxy + python 实现游戏协议测试,第1张

本文侧重介绍如何使用 python 和 mitmproxy 实现拦截数据包、重发数据包,以及解析 protobuf 数据内容,对于相关依赖的安装不做介绍。

参考 https://testerhome.com/topics/29053 ,这篇文章讲的很清楚。

想直接使用的同学可以跳到第三部分。

mitmproxy 作为代理,可以获取客户端与服务端通信的数据,并且可以拦截、修改和自主发送数据。当配合其证书使用时,还可以解密 wss 连接中的 websocket 数据。

在 http 代理的过程中若发现 upgrade websocket 请求,则创建 WebSocketLayer 实例,并调用其 <u style="box-sizing: border-boxoutline-style: none--tw-border-opacity:1border-color: rgb(229 231 235/var(--tw-border-opacity))">call</u>方法。

WebSocketLayer 初始化时会创建用于此次 websocket 通信的编解码器。

WebSocketLayer 实例的 <u style="box-sizing: border-boxoutline-style: none--tw-border-opacity:1border-color: rgb(229 231 235/var(--tw-border-opacity))">call</u>方法负责处理后续 websocket 通信

WebSocketLayer 实例中处理 Message Event 的方法

TCP 数据处理触发条件

TCP 信息处理 RawTCPLayer 类源码

首先需要安装两个库:mitmproxy 和 mitmdump

对于想实现开头文中所提到的功能还需要实现客户端,以及对于 protobuf 协议的编解码,这里限于篇幅不再讨论,后续有机会再更新。

另外,之所以 mitmproxy 选择 socks5 模式,是因为 socks 协议支持代理除了 http、https 以外更多种类的协议,windows 开启 socks5 代理的工具:proxifer,android 开启 socks5 代理工具:postern。

1、首先明确游戏自动化测试的开展,游戏自动化测试一般来说,感觉开展起来蛮繁琐的,因为其的不定性太高,对于一些主观性高的游戏测试,就不需要,但是可以应用于一些固定的回归测试,例如:对npc的一系列特定操作,什么时候触发什么事情,都按照一定的规则的触发;2、至于游戏测试脚本,这个不说是哪种合适,因为游戏自动化测试,要么做单元测试、要么游戏提供API接口,可以撰写脚本向功能接口发送请求信息,从而模拟一定的规律进行测试,所以用什么脚本无所谓了,只要能将请求信息发送到功能模块就行。3、常用的脚本有tcl、python、ruby、perl等。tcl以前一直用在电信网络方面的自动化测试、现在用的越来越少了,python和ruby等很好的面向对象、而且社区也比较大,发展潜力也可以,推荐可以学一学以上只做参考,具体就自己发现吧,祝你学习愉快,好运

一、思考❓❔

1.什么是性能自动化测试?

2.Python中的性能自动化测试库?

locust库

二、基础操作

1.安装locust

安装成功之后,在cmd控制台将会新增一条命令,可输入如下命令查看:

2.基本用法

三、综合案例演练

1.编写自动化测试脚本

2.使用命令行运行

3.打开web ui界面进行配置

设置并发用户数为10,每5秒创建一个用户

压测过程截图

美轮美奂的压测报告

压测失败详情

下载压测统计数据

下载的压测统计数据csv文件

六、总结

出处:https://www.cnblogs.com/keyou1/