news 2026/4/23 17:18:39

在 macOS 下用 mitmproxy 做 HTTP/HTTPS 抓包

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在 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挂载,适合自动化测试或爬虫场景。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 14:01:39

【AI】Cursor 编辑器使用指南

Cursor 编辑器使用指南 📖 目录 简介核心功能AI 交互模式模型选择快捷工具栏Web 搜索功能引用功能详解快捷键大全Agent 高级功能使用建议总结参考资源 简介 Cursor 是一款由 AI 驱动的代码编辑器,能够理解你的代码库,并通过自然语言助你更…

作者头像 李华
网站建设 2026/4/23 13:58:37

数通设备堆叠技术:iStack与CSS方案对比及应用选型

在数通网络架构中,堆叠技术是提升设备扩展性、可靠性与管理效率的核心方案,其中iStack(华为设备堆叠协议)与CSS(集群交换系统,华为高端设备堆叠方案)是业界主流的两种堆叠实现方式。结合业务口堆叠、堆叠卡堆叠、免配置堆叠等不同部署形态,二者在技术原理、性能特性、适…

作者头像 李华
网站建设 2026/4/23 12:10:24

Java死锁原因剖析:面试必看的高薪技巧!

文章目录Java死锁原因剖析:面试必看的高薪技巧!一、死锁:线程界的“抢椅子游戏”死锁的四个必要条件二、常见死锁场景:代码中的“定时炸弹”场景一:不恰当的锁顺序场景二:数据库中的锁竞争场景三&#xff1…

作者头像 李华
网站建设 2026/4/23 12:24:11

Java面试必看!如何优雅唤醒阻塞线程?

文章目录Java面试必看!如何优雅唤醒阻塞线程?一、引言二、常见问题1. 为什么不能使用Thread.stop()方法?2. 阻塞线程的常见场景三、如何优雅唤醒阻塞线程?1. 使用Interrupt机制(1)基本使用(2&am…

作者头像 李华
网站建设 2026/4/23 11:25:14

uniapp富文本rich-text

1. uniapp富文本rich-text 官方文档:https://uniapp.dcloud.net.cn/component/rich-text.html 1.1. 示例 1.1.1. richText.vue <template><view ><view class"rich-layout" ><rich-text :nodes"richText"></rich-text>&l…

作者头像 李华
网站建设 2026/4/23 13:38:58

FunASR + speech_ngram_lm_zh-cn 语音识别实战|附WebUI部署指南

FunASR speech_ngram_lm_zh-cn 语音识别实战&#xff5c;附WebUI部署指南 1. 背景与技术选型 1.1 为什么选择 FunASR&#xff1f; 在当前中文语音识别领域&#xff0c;FunASR 是由阿里云推出的一套功能完整、支持端到端推理的开源语音识别工具包。它不仅支持离线和在线模式…

作者头像 李华