我知道大部分测试人员都不喜欢看文档,所以稍微总结一下测试平时使用的功能,或者大家感兴趣的功能,一般是其他抓包软件无法或者不容易实现的
写了又删了,其他帖子都写这个,我就不写了,有兴趣自己会去装的
搁这看 官方
需要注意的是,如果服务器安装了,要在局域网其他设备访问,需要指定参数
--web-host 0.0.0.0
就测试而言,我举几个例子:
1、 可以测试客户端的不同响应,而不需要服务器的参与
比如我有一个登录或者 serverstate 接口,返回{"status": 1}。 现在我要测试停服界面,一般,我只需要把响应结果改成{"status": 0},客户端就会进入停服界面
2、 简单的安全测试
以下例子其实已经属于安全的范畴了,尤其在弱联网游戏中,很容易修改玩家的数值
在 mitmweb 中,点击 options-edit options,找到 modify_body,添加一行
/~s/"status":1/"status": 0
这个表示把响应中的status: 1
改为status: 0
同理, 我要测试 Bilibili 的硬币
修改之前:
修改之后:
使用的替换就是
/~s/"coin":\d+/"coin": 99999999999
所以这里是显示没问题的。
一般的抓包软件,即便我知道解密算法,那也无法可视化,只能抓包拿到 body,再通过其他的工具或代码解密
通过插件这里就可以可视化请求和响应
解密前:
解密后:
如果想要抓取某些包,比如谷歌商店的请求,一般是比较困难的。这里可以指定上游代理,前提是你已经安装了代理软件
--mode "upstream:http://localhost:7890@$proxy_port"
一般手机的长连接抓包是比较麻烦的,比如使用 root 然后 tcpdump,使用 wireshark 进行分析。 里面的内容是又多又乱。
这里直接使用 wireguard 模式
官方插件: doc.mitmproxy
github 插件:github
这里我举例几个:
1、上文中提到的解密,例子为
contentview
当然,解密逻辑需要自己写
2、ssl 握手失败的问题,可以直接让它通过,以免影响正常功能测试
check_ssl_pinning
3、 添加一个新的 option 选项,自定义功能
options-simple
4、 常见 sql 漏洞检测
xss_scanner
综合来说,拿到请求,是可以为所欲为的。比如我自己做的几个插件:
解密、api 文档生成、弱网络模拟、响应码检查等
pipx inject mitmproxy <package-name>
只提供思路,具体的可以查一下,也可以讨论
方法一:官方文档-Certificate Pinning
方法二:使用安卓 7.0 以下设备或模拟器
方法三:root+magisk
1、使用定时脚本重启
2、使用-w 写入文件
[编辑中]