如何在AWS CodeBuild中正确使用mitmdump记录HTTPS流量?
在AWS CodeBuild中用mitmdump捕获HTTPS流量的正确方法
你当前的问题核心是:只启动了mitmdump代理,但没有让后续的HTTP/HTTPS请求通过这个代理转发,所以mitmdump没有捕获到任何流量,导致输出文件为空。
问题原因分析
mitmdump默认监听8080端口作为HTTP代理,但系统默认不会自动把请求路由到这个代理。你执行的curl https://github.com/和其他命令都是直接发起请求,完全没经过mitmdump,自然不会被记录。
正确的配置方案
需要完成两个关键步骤:
- 配置环境变量,让所有HTTP/HTTPS请求通过mitmdump代理
- 信任mitmproxy的CA证书,避免HTTPS请求因证书验证失败被阻断
以下是修改后的完整buildspec.yml:
version: 0.2 phases: build: on-failure: CONTINUE commands: # 安装mitmproxy - sudo apt-get update - sudo apt-get -y install mitmproxy # 生成并信任mitmproxy的CA证书,解决HTTPS证书验证问题 - mitmdump --quiet --listen-port 8080 & - sleep 3 - sudo cp ~/.mitmproxy/mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/mitmproxy.crt - sudo update-ca-certificates # 配置代理环境变量,让所有请求走mitmdump - export HTTP_PROXY=http://localhost:8080 - export HTTPS_PROXY=http://localhost:8080 - export NO_PROXY=localhost,127.0.0.1 # 排除本地地址,避免代理请求循环 # 重启mitmdump并指定输出文件 - pkill mitmdump - mitmdump -w mitmdump.txt > mitmlog.txt & - sleep 3 # 测试请求,后续其他命令也会自动走代理 - curl https://github.com/ # 执行其他需要捕获流量的命令... artifacts: files: - 'mitmdump.txt' - 'mitmlog.txt'
关键配置说明
- 代理环境变量:通过
HTTP_PROXY和HTTPS_PROXY告诉系统所有HTTP/HTTPS请求都要经过localhost:8080的mitmdump代理;NO_PROXY排除本地地址,防止代理请求自己导致死循环。 - CA证书信任:mitmproxy通过自签证书解密HTTPS流量,必须把它的CA证书添加到系统信任列表,否则HTTPS请求会因证书不被信任而失败,无法被捕获。
- 进程管理:先临时启动mitmdump生成CA证书,再重启并指定输出文件,确保证书生成完成后再开始捕获流量。
额外注意事项
- 如果你的命令中有硬编码跳过代理的情况(比如某些工具自带
--no-proxy参数),需要手动调整这些命令,让它们走代理。 - CodeBuild的运行环境是临时的,每次构建都会重新安装依赖和配置证书,无需担心环境残留问题。
内容的提问来源于stack exchange,提问作者Pedro Henrique
相关产品推荐
相关产品推荐

