mitmproxy认识(1)

安装步骤(非客户端)

  1. 前提python环境最好3.6及以上

  2. python安装好后,pip命令执行

    1
    pip3 install mitmproxy
  3. mitm安装好后,有三种启动模式

    1. mitmdump(什么都不显示,后台运行)结合自定义脚本使用
    2. mitmproxy(命令行交互界面)
    3. mitmweb(webGUI界面友好)
  4. mitmweb为例,运行mitmweb,可以看到界面

    image-20250217181110137

  5. 安装mitmproxy证书

    1. 进入mitm.it,安装对应端证书,选择自己的平台

    image-20250217181122592

  6. chrome安装代理插件,配置如下

    1. 插件名称 SwitchyOmega

    image-20250217180947003

  7. 切换代理后,随意进入网页,即可看到GUI mitm内有请求记录

    image-20250217180931747

  8. 网页接口请求记录

    image-20250217180915708

脚本自定义结果

  1. 新建一个test_mitm.py文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import mitmproxy.http
from mitmproxy import ctx, http

class TestMitm:
def request(self, flow: mitmproxy.http.HTTPFlow):
# 修改请求部分 相当于fiddler前置断点
print(111)
...

def response(self, flow: mitmproxy.http.HTTPFlow):
# 修改返回部分 相当于fiddler后置断点
if flow.request.host in "<http://lchyang.cn:9888>":
ctx.log.info("+-========================="+flow.request.host)

text = flow.response.get_text()
text = text.replace("密码登录", "lchyang密码登录")
flow.response.set_text(text)

def http_connect(self, flow: mitmproxy.http.HTTPFlow):
if flow.request.host == "<http://lchyang.cn:9888>":
# flow.response = http.HTTPResponse.make(404)
text = flow.response.get_text()
print(f"===========================:+{text}")
  1. 新建另一个py文件为addons.py

    1
    2
    3
    4
    5
    from test_mitm import TestMitm

    addons = [
    TestMitm()
    ]
  2. 根据文件启动mitm

1
mitmweb -s addons.py
  1. webGUI内改动

    image-20250217180855621

  2. 刷新请求网页,可以看到,已经被改动

image-20250217180541629


mitmproxy认识(1)
http://example.com/2025/02/17/mitmproxy/
作者
冰红茶
发布于
2025年2月17日
许可协议