推荐一款代理工具 mitmproxy ,功能比较强大,不但可以像fiddler一样抓包,而且可以通过编写python脚本过滤监听的数据,修改请求和响应。
1.Mitmproxy是基于python开发的,所以可以直接用pip命令直接安装
pip install mitmproxy
2.mitmproxy 提供了三个命令,启动模式不同:
- mitmproxy -> 提供一个命令行界面(该命令不支持windows)
- mitmdump -> 提供一个简单的终端输出。
- mitmweb -> 提供一个浏览器界面
3.设置代理,和fiddler一致,我以手机为例,电脑和手机同一局域网,先通过cmd命令,我以android手机为例子,代理步骤
- 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请求,然后监控对应接口,并且修改返回的数据,这样子可以完成某些边界值的测试等,同时也可以模拟一些第三方的接口数据返回。