App HTTPS请求需mitmproxy代理+证书信任才能解密;手机连不上主因是防火墙未放行8080端口、网络类型非“专用网络”、IP未用电脑真实局域网地址,且证书安装后还需手动开启系统级信任。

App 的 HTTPS 请求默认无法直接抓取,必须用中间人代理工具配合证书信任才能解密流量;mitmproxy 是目前最可控、可脚本化程度最高的方案,但卡在证书和代理配置上的人超过 70%。
手机连不上 mitmproxy 代理的常见原因
不是端口没开,也不是 IP 写错,而是三个关键点没对齐:
- 电脑防火墙必须放行
mitmproxy监听的端口(默认8080),Windows 防火墙里要新增入站规则,类型选「端口」,协议 TCP,范围填8080 - 手机和电脑必须在同一个局域网,且不能是「公共网络」——Windows 设置里要把当前网络设为「专用网络」,否则会阻止外部设备访问
- 手机设置代理时,IP 必须是电脑的真实局域网地址(比如
192.168.1.105),不是127.0.0.1或localhost;可用命令快速查:ipconfig(Windows)或ifconfig | grep "inet "(macOS/Linux)
HTTPS 抓包失败:证书安装后仍提示不安全
证书装了≠信任了,尤其在 iOS 和较新 Android 上,两步缺一不可:
- iOS:安装完证书后,必须进「设置 → 已下载描述文件」安装,再进「设置 → 关于本机 → 证书信任设置」,把
mitmproxy对应的证书开关打开 - Android 10+:安装
mitm.it下载的mitmproxy-ca-cert.pem后,还要进「设置 → 安全 → 加密与凭据 → 信任的凭据 → 用户」,确认证书已列出并启用 - Chrome / Safari 单独访问 HTTPS 站点仍报错?说明浏览器没走系统级证书信任链——此时别用浏览器测试,直接打开目标 App(如当当、京东),看
mitmweb页面是否出现加密请求流,这才是真实信号
用 mitmdump 实时过滤并导出接口数据
mitmdump 适合自动化场景,比如只想捕获某 App 的评论接口,同时存成结构化日志:
立即学习“Python免费学习笔记(深入)”;
- 启动命令带过滤表达式:
mitmdump -w comments.log --set view_filter="~u api.dangdang.com.*comment.*",其中~u匹配 URL,正则部分要转义点号 - 如果接口带签名参数(如
sign=xxx),mitmdump只能记录,无法自动解密——得配合 Python 脚本用response钩子解析 JSON 并提取字段 - 导出的日志是二进制格式,不能直接用文本编辑器打开;要用
mitmdump -r comments.log回放,或写脚本用mitmproxy.io.FlowReader加载解析
为什么 mitmweb 界面看不到任何请求
界面空着,大概率是流量根本没经过代理,而不是工具没运行:
- 检查
mitmweb启动后终端是否显示Proxy server listening at http://*:8080,若端口被占(如另一程序用了8080),加-p 8888换端口 - 手机代理设置后,先用手机浏览器访问
http://example.com(非 HTTPS),如果mitmweb出现明文 HTTP 请求,说明代理通了;再试 HTTPS,才判断证书问题 - 某些 App(如银行类、抖音)做了证书固定(Certificate Pinning),
mitmproxy无法绕过——这不是配置问题,是设计限制,得换 Frida 注入或逆向分析
真正难的从来不是启动命令,而是确认每层网络路径都透明:手机 DNS 解析是否走代理、系统证书是否被 App 忽略、防火墙是否静默丢包——这些地方一漏,就卡在“看起来都对,就是没数据”。


















