python+Proxifier+mitmproxy实现监听本地网路所有的http请求

python+Proxifier+mitmproxy实现监听本地网路所有的http请求

  • 概述
    • [1. 安装 mitmproxy](#1. 安装 mitmproxy)
    • [安装 Proxifier](#安装 Proxifier)
    • [3. Python 环境](#3. Python 环境)
    • 配置步骤
      • [第一步:设置 mitmproxy 代理服务器](#第一步:设置 mitmproxy 代理服务器)
    • [第二步:配置 Proxifier](#第二步:配置 Proxifier)
    • 证书生成和安装
    • [1. 启动mitmproxy生成证书和安装](#1. 启动mitmproxy生成证书和安装)

概述

在网络调试、爬虫开发或安全测试中,我们经常需要监听和分析本地的网络请求。本文将介绍如何结合 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

找到证书点击安装即可

结果:

相关推荐
大黄说说8 分钟前
TensorRTSharp 实战指南:用 C# 驱动 GPU,实现毫秒级 AI 推理
开发语言·人工智能·c#
范纹杉想快点毕业12 分钟前
嵌入式系统架构之道:告别“意大利面条”,拥抱状态机与事件驱动
java·开发语言·c++·嵌入式硬件·算法·架构·mfc
沐泽__13 分钟前
Flask简介
后端·python·flask
陳103014 分钟前
C++:map和set的使用
开发语言·c++
码界奇点17 分钟前
基于Django的超市管理系统设计与实现
数据库·python·django·sqlite·毕业设计·源代码管理
2501_9403152617 分钟前
【无标题】2390:从字符串中移除*
java·开发语言·算法
lly20240623 分钟前
jEasyUI 树形菜单添加节点
开发语言
AI职业加油站26 分钟前
Python技术应用工程师:互联网行业技能赋能者
大数据·开发语言·人工智能·python·数据分析
鱼很腾apoc32 分钟前
【实战篇】 第14期 算法竞赛_数据结构超详解(下)
c语言·开发语言·数据结构·学习·算法·青少年编程
芳草萋萋鹦鹉洲哦33 分钟前
后端C#,最好能跨平台,桌面应用框架如何选择?
开发语言·c#