前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测开必备工具-Mitmproxy

测开必备工具-Mitmproxy

作者头像
搁浅同学
发布2022-07-21 14:56:02
7220
发布2022-07-21 14:56:02
举报

推荐一款代理工具 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请求,然后监控对应接口,并且修改返回的数据,这样子可以完成某些边界值的测试等,同时也可以模拟一些第三方的接口数据返回。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 暴走的软件测试Tester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档