测开必备工具-Mitmproxy

2022-07-21 14:56:02 浏览数 (1)

推荐一款代理工具 mitmproxy ,功能比较强大,不但可以像fiddler一样抓包,而且可以通过编写python脚本过滤监听的数据,修改请求和响应。

1.Mitmproxy是基于python开发的,所以可以直接用pip命令直接安装

pip install mitmproxy

2.mitmproxy 提供了三个命令,启动模式不同:

  • mitmproxy -> 提供一个命令行界面(该命令不支持windows)
  • mitmdump -> 提供一个简单的终端输出。
  • mitmweb -> 提供一个浏览器界面

3.设置代理,和fiddler一致,我以手机为例,电脑和手机同一局域网,先通过cmd命令,我以android手机为例子,代理步骤

  1. cmd命令启动,mitmweb命令启动,如下,启动后了监听8080端口,同时启动了一个服务端,端口号是8081,打开可以看到WEB抓包情况

2. 手机设置代理

3.安装证书,浏览器访问mitm.it,根据对应的平台进行下载证书安装

选择对应平台,目前用的是android,点击android图标下载,安装证书(和fiddler一样),(有些浏览器会下载失败,可以切换浏览器)安装完成就可以正常抓包了。可以在对应的web端看到抓包的情况,如下:

最想介绍的功能是编写python脚本监控接口,并修改数据返回

比如我监控以下接口:/cloud/v2/deviceManaged/bypassV2,修改某些响应返回数据(需要根据请求和参数进行脚本的调整),例子脚本如下:

代码语言:javascript复制
# coding =utf-8
import os
from mitmproxy import http
import json
def request(flow: http.HTTPFlow):
    pass
def response(flow: http.HTTPFlow):
    print(flow.request.pretty_url)
    if flow.request.path == "/cloud/v2/deviceManaged/bypassV2":
        res_data = json.loads(flow.response.get_text())
        res_data["result"]["result"]["air_quality_value"] = 60
        flow.response.set_text(json.dumps(res_data))
if __name__ == "__main__":
    file_path = __file__  #取当前文件路径
    cmd = "mitmweb -s"   file_path  #cmd窗口命令:mitmweb -s  脚本路径
    os.system(cmd)    #运行cmd命令

通过运行脚本后,以后app每次访问该接口时,都会返回被修改接口的数据。

通过脚本运行,我们可以拦截任何的http请求,然后监控对应接口,并且修改返回的数据,这样子可以完成某些边界值的测试等,同时也可以模拟一些第三方的接口数据返回。

0 人点赞