python+Proxifier+mitmproxy实现监听本地网路所有的http请求
概述
在网络调试、爬虫开发或安全测试中,我们经常需要监听和分析本地的网络请求。本文将介绍如何结合 Python、Proxifier 和 mitmproxy 工具,实现对本地所有 HTTP/HTTPS 请求的全面监控。
1. 安装 mitmproxy
python
# 使用 pip 安装 mitmproxy
pip install mitmproxy
# 或者使用 conda
conda install -c conda-forge mitmproxy
安装 Proxifier
从 Proxifier 官网 下载并安装,支持 Windows 和 macOS
3. Python 环境
Python 3.13.6
配置步骤
第一步:设置 mitmproxy 代理服务器
创建 Python 脚本启动 mitmproxy 并添加自定义处理逻辑:
test_script.py
python
# -*- coding: utf-8 -*-
# @Time : 2026/1/12 17:50
# @Author : WP
# @File : test_script.py
# @Software: PyCharm
from mitmproxy import http
def request(flow: http.HTTPFlow):
print(f"请求: {flow.request.host}{flow.request.path}")
print(f"方法: {flow.request.method}")
print(f"头部: {dict(flow.request.headers)}")
print(f"目标请求: {flow.request.url}")
if flow.request.content:
print(f"请求体: {flow.request.content.decode('utf-8', errors='ignore')}")
def response(flow: http.HTTPFlow):
print(flow.response.content.decode('utf-8', errors='ignore'))
print(f"捕获目标响应: {flow.response.status_code}")
print(f" URL: {flow.request.url}")
print(f" 响应头: {dict(flow.response.headers)}")
# 检查响应内容类型
content_type = flow.response.headers.get("Content-Type", "")
if "application/json" in content_type or "text/" in content_type:
try:
print(f" 响应体: {flow.response.content.decode('utf-8', errors='ignore')[:500]}...") # 只打印前500字符
except:
print(f" 响应体: [无法解码为文本]")
运行(端口默认8080)
powershell
mitmdump -s test_script.py
第二步:配置 Proxifier
1.打开 Proxifier,进入 Profile → Proxy Servers
添加代理服务器:
javascript
Address: 127.0.0.1
Port: 8080
Protocol: HTTP
Port: 8080 (mitmproxy 默认端口)
配置代理规则 (Profile → Proxification Rules):
javascript
Name: Default
Applications: Any
Target Hosts: Any
Target Ports: Any
Action: Proxy HTTP 127.0.0.1:8080
居中的图片: 

证书生成和安装
1. 启动mitmproxy生成证书和安装
Windows系统
javascript
# 1. 启动mitmproxy生成证书
mitmdump
# 2. 证书位置通常在这里:
# C:\Users\<用户名>\.mitmproxy\mitmproxy-ca-cert.cer
# 或
# C:\Users\<用户名>\.mitmproxy\mitmproxy-ca-cert.p12
找到证书点击安装即可

结果:
