2、环境搭建与工具安装:Python3.9+环境配置、mitmproxy安装与证书配置、goreplay安装与基础验证
说实话,做数据录制与回放,最怕什么?
怕环境没搭好,折腾半天发现是工具的问题。
我刚开始搞这套流程的时候,光证书配置就卡了两天。后来总结出一套「稳如老狗」的安装流程,今天全部分享给你。
2.1 Python3.9+ 环境配置
为什么强调 3.9+?因为 mitmproxy 从 8.0 开始就要求 Python 3.9 以上了。你想想看,装了半天发现版本不对,多闹心。
我个人习惯用 pyenv 管理多版本 Python,但如果你只是做这个课程,直接装一个 3.9 或 3.10 就行。
推荐版本:Python 3.9.13 或 3.10.11
这两个版本经过大量项目验证,兼容性最好。
Windows 安装步骤
- 去 python.org 下载对应版本的安装包
- 安装时记得勾选 Add Python to PATH
- 打开 cmd 验证:
python --version
macOS / Linux 安装步骤
- 用 Homebrew 安装:
brew install python@3.9 - 或者用 pyenv:
pyenv install 3.9.13 - 验证:
python3 --version
小技巧:安装完后顺手建个虚拟环境。我习惯用 python -m venv venv,这样后面装 mitmproxy 不会污染全局。
2.2 mitmproxy 安装与证书配置
mitmproxy 是咱们录制数据的核心工具。说白了,它就是个中间人代理,能拦截、查看、修改 HTTP/HTTPS 流量。
安装其实很简单,一行命令搞定:
pip install mitmproxy
等它装完,验证一下:
mitmproxy --version
如果能看到版本号,恭喜你,第一步成了。
证书配置——这块容易踩坑
为什么要配证书?因为 mitmproxy 要解密 HTTPS 流量。不配证书的话,你只能看到加密后的乱码。
我曾经在配置 iOS 证书时折腾了一下午,最后发现是没信任描述文件。嗯,这里我把步骤给你捋清楚。
Windows / macOS 证书安装
- 启动 mitmproxy:终端输入
mitmproxy - 浏览器访问
http://mitm.it - 下载对应系统的证书文件
- 双击安装,选择「受信任的根证书颁发机构」
移动端证书安装(Android / iOS)
- 手机设置代理为电脑 IP,端口 8080
- 浏览器访问
http://mitm.it - 下载对应平台的证书
- Android:设置 → 安全 → 从存储设备安装
- iOS:设置 → 通用 → 关于本机 → 证书信任设置 → 开启信任
注意:Android 7.0 以上默认不信任用户证书。你需要 root 或者把证书装到系统分区。我建议用 Android 模拟器做测试,省心很多。
2.3 goreplay 安装与基础验证
goreplay 是流量回放的神器。它能抓取线上的真实流量,然后原封不动地打到测试环境。
安装方式很简单,去 GitHub 下载对应系统的二进制文件就行。
下载与安装
# Linux / macOS
wget https://github.com/buger/goreplay/releases/download/v1.3.3/gor_1.3.3_linux_amd64.tar.gz
tar -xzf gor_1.3.3_linux_amd64.tar.gz
sudo mv gor /usr/local/bin/
# 验证
gor --version
Windows 用户直接下载 exe 文件,放到一个 PATH 目录下就行。
基础验证——跑一个最简单的例子
咱们先验证 goreplay 能不能正常工作。打开两个终端:
终端 1:启动一个测试服务
# 用 Python 快速起一个 HTTP 服务
python -m http.server 8080
终端 2:启动 goreplay 录制
gor --input-raw :8080 --output-stdout
然后在浏览器访问 http://localhost:8080,你会看到终端 2 里打印出了 HTTP 请求的详细信息。
看到输出就说明 goreplay 安装成功了。就是这么简单。
2.4 本章知识体系总览
下面这张图帮你理清三个工具之间的关系:
2.5 避坑指南——我踩过的那些坑
- 证书不生效:我曾经在 Windows 上装了证书但浏览器不认,后来发现是没把证书放到「受信任的根证书颁发机构」里。双击安装时记得选对位置。
- 端口被占用:启动 mitmproxy 时提示端口被占用,用
lsof -i :8080查一下谁在用,或者换个端口。 - goreplay 没输出:检查一下是不是用 sudo 运行的。goreplay 抓取原始流量需要 root 权限。
- Python 版本冲突:虚拟环境是你的好朋友。别偷懒,每次项目都新建一个 venv。
我的建议:环境搭建这块别着急,一步一步来。每装完一个工具就验证一下,别等三个全装完再调试。那样出了问题你都不知道是哪个环节的锅。
好了,环境搭好了,工具也验证通过了。下一章咱们就开始真正录制数据了。