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

在 macOS 下用 mitmproxy 做 HTTP/HTTPS 抓包

大家好,我是jobleap.cn的小九。
在 macOS 下用 mitmproxy 做 HTTP/HTTPS 抓包,可以分成四步:安装、启动代理、配置系统/浏览器代理、安装并信任证书(HTTPS 必须)。 下面用最常用的 mitmweb 图形界面举例,顺带给出终端版 mitmproxy 的用法。[1][2][3]

安装 mitmproxy(macOS)

  • 使用 Homebrew(推荐):在终端执行
    brewinstall--cask mitmproxy
    安装完成后会有mitmproxy / mitmweb / mitmdump三个命令可用。
  • 如果不想用 Homebrew,也可以到官网下载独立二进制包,解压后直接运行对应可执行文件即可。

启动 HTTP/HTTPS 代理

mitmproxy 默认监听 8080 端口,对 HTTP/HTTPS 都生效(代理层面不区分协议)。

  • 启动浏览器 GUI:
    mitmweb -p8080
    启动后会监听127.0.0.1:8080,并在浏览器打开一个控制台,所有经过的 HTTP/HTTPS 请求都会在这里显示,可点选查看请求头、响应体等。
  • 启动终端交互界面:
    mitmproxy -p8080
    这是 TUI 版本,通过键盘操作进行流量查看和拦截修改,适合习惯键盘流的场景。

只抓 HTTP 的话,到这一步 + 配好代理已经够用,因为 HTTP 无须证书。HTTPS 再看后两节。

配置 macOS / 浏览器代理(HTTP + HTTPS)

目标是让要抓的流量都走到127.0.0.1:8080。下面以抓桌面浏览器为例。

  • 在 macOS 系统层配置(影响所有走系统代理的应用):

    1. 打开「系统设置」→「网络」。
    2. 选择当前使用的网络(如 Wi‑Fi),点「详情」或「高级」。
    3. 找到「代理」页签,勾选:
      • HTTP 代理
      • HTTPS 代理
    4. 服务器填127.0.0.1,端口填8080(需与 mitmweb/mitmproxy 实际监听端口一致)。
  • 单独在浏览器里配置(只影响该浏览器):

    • Chrome/Edge:通常跟随系统代理;如用了 SwitchyOmega 之类插件,就在插件里将 HTTP/HTTPS 代理都设为127.0.0.1:8080
    • Firefox:可在「设置 → 网络设置 → 手动代理配置」里单独指定 HTTP / HTTPS 代理为127.0.0.1:8080

此时访问纯 HTTP 网站(如http://example.com),mitmweb/mitmproxy 中已经可以看到完整请求/响应,无须额外配置,这就是完整的 HTTP 抓包流程。

HTTPS 抓包:安装并信任 mitmproxy 证书

要解密 HTTPS,关键是让系统/浏览器信任 mitmproxy 的根证书。流程概括为:通过代理访问http://mitm.it→ 下载证书 → 导入钥匙串并设为「始终信任」。

  1. 确认代理已生效:
    • 确保 mitmweb/mitmproxy 正在运行,且 macOS/浏览器代理已指向127.0.0.1:8080
  2. 在要抓包的浏览器中访问:
    • 打开http://mitm.it(注意是 http,不是 https)。
    • 页面会出现各平台的证书下载按钮,选择「macOS」或「Other」并下载证书文件(一般是.pem.crt)。
  3. 导入到 macOS 钥匙串:
    • 双击下载的证书,会自动打开「钥匙串访问」。
    • 建议导入到「系统」或「登录」钥匙串。导入后在证书列表中找到它(一般名字包含mitmproxy)。
  4. 设置为信任:
    • 在「钥匙串访问」中双击该证书,展开「信任」设置。
    • 将「使用此证书时」改为「始终信任」,关闭窗口时会要求输入密码确认。
    • 设置完成后,浏览器/系统会信任 mitmproxy 作为根 CA,从而允许它解密 HTTPS。

完成以上步骤后,再访问 HTTPS 网站(如https://www.baidu.com),mitmweb/mitmproxy 中就能看到解密后的请求和响应内容,包括 URL、头、Body 等,这就是完整的 HTTPS 抓包流程。

常用操作与脚本扩展

  • 在 mitmweb 中可以对流量做:
    • 按域名/路径过滤,只看特定服务。
    • 点选某条流量查看详细请求/响应头与 Body。
    • 拦截请求或响应,修改参数后重放,用来模拟各种场景。
  • 命令行脚本扩展:
    • mitmproxy 支持用 Python 写插件,对请求/响应做自动处理,例如自动加头、记录日志、Mock 返回等。
    • 插件通过-s your_script.py挂载,适合自动化测试或爬虫场景。
http://www.jsqmd.com/news/235112/

相关文章:

  • 【波束成形】双功能雷达与通信系统【含Matlab源码 14910期】
  • Java死锁原因剖析:面试必看的高薪技巧!
  • 智能客服工单处理:精准QA提炼术
  • 关于 WEEX 唯客平台安全性的客观信息梳理
  • 医疗数据用JAX加速训练稳预测
  • ODC轨道数据中心算力电源架构与SiC碳化硅MOSFET应用研究报告
  • BERT核心机制解析:BERT 是不是多头的,有没有位置编码,注意力机制;还是仅仅就是向量映射,BGE和BM25是什么,怎么使用
  • 收藏学习!AI如何克服“金鱼记忆“?从RAG到AgentRAG再到记忆增强系统详解
  • 【波束成形】自适应MVDR波束成形和人工噪声无人机链路的运动感知物理层安全【含Matlab源码 14927期】
  • 数通设备堆叠技术:iStack与CSS方案对比及应用选型
  • 从RAG的核心技术原理(语义表示、检索机制、知识融合)出发,解决“为什么检索不精准”“为什么知识融合不高效”等根本问题
  • 如何高效实现图片智能抠图?试试科哥CV-UNet大模型镜像
  • 【雷达回波】电离层回波方向估计HF地表波雷达【含Matlab源码 14911期】
  • 【波束成形】基于matlab双功能雷达与通信系统【含Matlab源码 14910期】
  • 零基础玩转语音识别|科哥定制FunASR镜像一键部署教程
  • 移远SDK ql_app_pre_init.c文件解析
  • 【波束成形】基于matlab自适应MVDR波束成形和人工噪声无人机链路的运动感知物理层安全【含Matlab源码 14927期】
  • 如何快速实现图片智能抠图?CV-UNet大模型镜像开箱即用
  • 移远 api对应的内核映射函数地址解析
  • uniapp富文本rich-text
  • 通过函数地址从符号名中反汇编函数名
  • 基于GTE大模型的语义相似度实践|可视化WebUI+API集成方案
  • 程序员必备的语义检索工具:基于GTE模型的高效相似度计算实践
  • 深度学习抠图新体验|使用CV-UNet镜像实现精准Alpha通道提取
  • objdump、nm、addr2line命令解析
  • 基于CV-UNet一键智能抠图|快速实现单张与批量背景去除
  • 【完全免费】小丸工具箱超详细的视频体积压缩教程,从1G视频压缩到100M,几乎不损画质,完全免费,而且可以批量处理视频文件
  • 零代码抠图部署|基于CV-UNet Universal Matting镜像快速构建WebUI
  • 如何用FunASR+WebUI快速实现语音转文字?科哥镜像一键部署指南
  • 【完全免费】黑白照片变彩色照片,一键处理百张黑白老照片,AI上色效果比手工精细10倍,效果太惊艳了,老照片AI修复上色全流程演示,支持离线使用!