mitmproxy的安装【macOS】及使用
mitmproxy的安装
打开mitmproxy官网,可以看到官方提供的安装命令,使用brew来直接进行安装
brew install mitmproxy
如果是windows系统,可以看考mitmproxy的windows安装方法来进行安装
mitmweb的使用
1、打开mitmweb
#命令行输入mitmweb,即可在浏览器中打开本地的mitmweb的监听页面
mitmweb
2、配置系统代理或谷歌OmegaSwitch插件代理【我这里使用的谷歌浏览器插件】
3、安装证书,切换至mitm代理,浏览器中输入mitm.it
点击mac,下载证书
双击下载的证书,进行证书安装,并信任
4、访问https站点,查看加密信息是否能正常查看
mitmdump的使用
1、命令行输入mitmdump启动mitmdump,默认监听8080,也可以使用-p参数指定端口
mitmdump
mitmdump -p 8090
2、mitmdump实现charles的maplocal功能
先抓取要篡改的接口信息
编写插件代码,先查看下能否正常获取到接口数据
可以参考官方文档的插件例子
import mitmproxy.http
from mitmproxy import ctx
class ZWmaplocal:
def __init__(self):
self.num = 0
def request(self, flow: mitmproxy.http.HTTPFlow):
self.num += 1
ctx.log.info("We've seen %d flows" % self.num)
ctx.log.info("Base content %s" % str(flow.get_state()))
addons = [
ZWmaplocal()
]
接着,对request方法进行修改,实现maplocal,修改响应的内容,with中本地读取之前抓取到接口中的response内容,将要修改的内容修改后保存
from mitmproxy import http, ctx
class ZWmaplocal:
def __init__(self):
self.num = 0
def request(self, flow: http.HTTPFlow):
# if "baidu" in flow.request.pretty_url:
if f"v5/stock/batch/quote.json" in flow.request.pretty_url:
with open(r"/Users/CreamK/Desktop/maplocal.json", "r", encoding="utf-8") as f:
flow.response = http.HTTPResponse.make(
200, # (optional) status code
f.read(), # (optional) content
{"Content-Type": "application/json"} # (optional) headers
)
addons = [
ZWmaplocal()
]