测试平台系列(131) 用例生成之配置mitmproxy.md

2022/6/13 测试平台接口测试FastApiPythonReact

大家好~我是米洛
我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持。
欢迎关注我的公众号米洛的测开日记,获取最新文章教程!

# 回顾

上一节我们介绍了mitmproxy,这节我们就来轻松愉快地实现一个篡改HTTP返回的功能。

# 安装证书

正好我的电脑重装了系统,所以证书嘛的,我也得重新安装一遍,顺便记录下整个过程。

首先我们开启mitmproxy.exe,接着打开浏览器: 输入mitm.it

他提示我们没有通过代理访问这个网站,所以我们需要配置下自己的代理服务器(Mac的用户还请自己百度一下,目前我的机器是Windows)

按住Windows键,搜索代理

进入代理设置页面,输入127.0.0.1+8080端口,接着保存即可。

再次访问mitm.it页面:

页面发生了变化,我们直接下载Windows下的证书,下载完成后打开,一直点下一步即可。

最后点击确定即可。

其实安装证书主要是为了让https接口能够正常运转,不然我们录制到https接口的时候会提示我们经过了代理,从而被拦截

# 打开网站测试一下

我们打开掘金,可以看到有很多个录制到的接口,而且页面基本上也是无感知的,不会报啥安全问题

(大家可以多开几个网站试试看,看会不会有什么问题)

# 篡改百度首页

我们今天的任务是写一个简单的mock脚本,让大家感受一下mitmproxy的强大。

当用户访问https://www.baidu.com的时候,给他返回百度一下,你就知道

话不多说,开造。

  • 编写一个最基础的脚本

    我们需要先编写一个baidu.py,接着写入以下内容:

from mitmproxy import http


class Baidu(object):

    def request(self, flow):
        if flow.request.pretty_url.startswith("https://www.baidu.com"):
            flow.response = http.Response.make(
                200,  # (optional) status code
                "百度一下,你就知道",  # (optional) content
                {"Content-Type": "application/json"}  # (optional) headers
            )

addons = [
    Baidu()
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

这里我们定义了一个百度类,接着在每次request请求进来的时候,我们判断他的url是不是baidu.com,是的话,我们就给他设置一下response,其中HTTP状态码为200,返回内容为百度一下,你就知道

接着我们把这个类加入addons数组,并在mitmproxy.exe启动的时候挂载之。

  • 挂载addons

    执行一下命令(需要把mitmpdump.exe放入环境变量, 也可以pip全局安装mitmproxy)

mitmdump -s baidu.py
1

接着我们挂上8080的代理,开始访问百度,这时候就应该展现gif图了!

# 这样我们就完成了一个简单的篡改请求,虽然这不是用例录制相关的内容,但我还是想展示一下mitmproxy的强大。

今天的内容就讲到这里,下一节我们继续介绍用例生成相关内容。