当前位置: 首页 > news >正文

Mac安装mitmproxy及操作对监控的请求

在 macOS 上安装和配置 mitmproxy 是一个相对简单的过程,可以使用常见的包管理工具如 Homebrew 或直接通过 Python 的包管理工具 pip。以下是详细的安装步骤:

方法一:使用 Homebrew 安装
Homebrew 是 macOS 上流行的包管理工具。它可以快速安装 mitmproxy。

安装过程:
1、更新 Homebrew
运行以下命令以确保 Homebrew 是最新的:

brew update

2、安装 mitmproxy
使用 Homebrew 安装 mitmproxy:

brew install mitmproxy

3、验证安装
安装完成后,可以通过以下命令验证版本:

mitmproxy --version

4、输出版本信息即表示安装成功。
启动 mitmproxy 或 mitmweb
启动 mitmproxy:

mitmproxy --listen-host 0.0.0.0 --listen-port 8080

启动 mitmweb(显示 GUI):

mitmweb --listen-host 0.0.0.0 --listen-port 8080

方法二:使用 Python 的 pip 安装
如果没有使用 Homebrew,也可以通过 Python 的包管理工具 pip 安装 mitmproxy,因为它是用 Python 编写的。

安装过程:
1、确保 macOS 上已安装 Python 3
检查 Python 版本,运行以下命令:

python3 --version

如果尚未安装,可以通过 Homebrew 安装:

brew install python

2、升级 pip
在安装 mitmproxy 之前,建议确保 pip 已更新:

python3 -m pip install --upgrade pip

3、安装 mitmproxy
使用 pip 安装 mitmproxy:

python3 -m pip install mitmproxy

4、验证安装
检查 mitmproxy 版本确认安装是否成功:

mitmproxy --version

启动 mitmproxy 或 mitmweb

启动 mitmproxy:

mitmproxy --listen-host 0.0.0.0 --listen-port 8080

启动 mitmweb(显示 GUI):

mitmweb --listen-host 0.0.0.0 --listen-port 8080

配置 mitmproxy
配置代理
1、设置代理:
在 macOS 的系统设置中,进入 Wi-Fi > 网络设置 > 高级选项 > 代理。
配置 HTTP/HTTPS 代理地址为 127.0.0.1:8080 或运行 mitmproxy 的本地 IP 和端口号。
2、配置证书信任(确保可以抓 HTTPS 流量)
mitmproxy 默认会拦截 HTTPS 流量,但需要用户设备信任其自签名证书。以下是设置证书信任的步骤:
1、安装证书:
在设备浏览器中访问 http://mitm.it,并按照提示下载 mitmproxy 的证书。
下载后会生成一个 *.pem 文件。
2、将证书导入 macOS 的钥匙串中:
双击 .pem 文件,系统会自动导入到钥匙串工具中。
在 钥匙串访问 中找到导入的证书。
右击证书,选择 信息,然后设置为 始终信任。
3、验证证书是否生效:
再次运行 mitmproxy 或 mitmweb,进行流量捕获测试。

常见问题和解决方法

  1. mitmproxy 未显示流量
    解决办法:
    确保代理端口设置正确,应用是否连接到 127.0.0.1:8080。
    配置证书信任,确保 HTTPS 请求能够被解密。
  2. Python 版本不兼容
    如果系统自带的 Python 版本较低(如 2.x),建议安装最新版 Python:
brew install python
  1. GUI (mitmweb) 不显示流量
    流量过多时可能存在延迟,增加资源限制:
mitmweb --set connection_strategy=eager

检查过滤器是否存在:
清空过滤器规则,显示所有流量。

mitmproxy 提供了扩展 API,允许编写 Python 脚本对流量进行操作,如捕获、过滤和处理 HTTP 请求。

以下是一个 Python 脚本,能够捕获 HTTP 请求并存储到集合中:

from mitmproxy import http
import json# 全局请求列表
http_requests = []
def read_json(file_path):"""读取 JSON 文件数据"""try:with open(file_path, 'r', encoding='utf-8') as file:data = json.load(file)  # 加载 JSON 数据为 Python 对象return dataexcept FileNotFoundError:print(f"{file_path} 不存在,将创建新文件。")return {}  # 如果文件不存在,返回一个空字典except json.JSONDecodeError:print(f"无法解析 {file_path},请确保文件内容是合法的 JSON。")return {}def request(flow: http.HTTPFlow) -> None:"""每次捕获 HTTP 请求时执行此回调函数"""global http_requests# 提取请求的基本信息url = flow.request.urlmethod = flow.request.methodheaders = dict(flow.request.headers)content = flow.request.text# 将请求信息存入集合request_data = {"url": url,"method": method,"headers": headers,"content": content,}http_requests.append(request_data)print(f"捕获请求: {url}")def response(flow: http.HTTPFlow) -> None:"""每次捕获 HTTP 响应时执行此回调函数"""global http_requestsurl = flow.request.urlprint(f"完成响应: {url}")def done():"""在 mitmproxy 运行结束时保存请求集合的数据"""global http_requests# 将捕获的请求保存到文件with open("http_requests.json", "w", encoding="utf-8") as f:json.dump(http_requests, f, indent=4)print(f"捕获了 {len(http_requests)} 个 HTTP 请求,已保存到 'http_requests.json'")

如何使用以上脚本

  1. 保存脚本文件
    将上述代码保存到文件中,例如 capture_requests.py。

  2. 启动 mitmproxy 并加载脚本
    通过 mitmproxy 或 mitmdump 加载脚本。例如:

mitmproxy -s capture_requests.py

或者使用 mitmdump(无界面模式):

mitmdump -s capture_requests.py
  1. 捕获流量
    确保目标设备正确配置代理到运行 mitmproxy 的机器,同时安装并信任 CA 证书。完成流量操作后,脚本会自动将请求数据保存到 http_requests.json。
http://www.dtcms.com/a/351135.html

相关文章:

  • 少儿舞蹈小程序详细设计文档
  • Mac中修改Word的Normal.dotm文件
  • 使用Uniapp开发小程序,如何引入插件组件!
  • 三电平buckboost电路出现上下母线不平衡是什么原因
  • Linux驱动开发笔记(八)——按键输入实验
  • 滚珠导轨如何定义半导体制造精度?
  • 【LeetCode 热题 100】75. 颜色分类——双指针
  • 算法题打卡力扣第209题:长度最小的子数组(mid)
  • 计算神经科学数学建模编程深度前沿方向研究(中)
  • AbMole小课堂丨Lenvatinib(E7080):如何通过靶向多靶点抑制VEGFR/FGFR/PDGFRα抑制肿瘤?
  • 【vue eslint】报错:Component name “xxxx“ should always be multi-word
  • LeetCode 100 -- Day6
  • 论文阅读:CIKM 2024 Empowering Private Tutoring by Chaining Large Language Models
  • 低空经济产业白皮书:音视频链路在智能飞行体系中的核心地位
  • 验证码请求与缓存问题解决方案
  • 用无标签语音自我提升音频大模型:SI-SDA 方法详解
  • 【JavaEE】(19) MyBatis-plus
  • 基于SpringBoot的考研资讯平台
  • 没有cpolar:会议记录手忙脚乱;有了cpolar:CapsWriter语音转文字轻松搞定
  • 如何在GitHub找到10k+个stars的仓库
  • USB摄像头驱动完整分析 (从插入到出画)
  • 飞算JavaAI:Java开发新时代的破晓之光
  • 基于印染数据的可视化系统设计与实现
  • 【笔记】大模型业务场景流程综述
  • (论文速读)MBQ:大型视觉语言模型的模态平衡量化
  • 深度学习在金融订单簿分析与短期市场预测中的应用
  • 力扣hot100:搜索旋转排序数组和寻找旋转排序数组中的最小值(33,153)
  • 大语言模型(LLM)基本原理浅析:从“冰箱做菜“到多模型对比实战
  • 理解SSH服务
  • onnx入门教程(七)——如何添加 TensorRT 自定义算子