如何为MacBook Pro上的iOS模拟器配置HTTP代理?
解决iOS模拟器HTTP代理无法转发请求到mitmproxy的问题
我之前也踩过类似的坑,明明配置了代理但就是抓不到请求,下面给你几个关键的排查步骤,一步步来解决:
1. 确保iOS模拟器的代理设置正确生效
系统偏好设置里的代理有时候不会自动同步到已经启动的iOS模拟器,尤其是你先开了模拟器再改的代理配置。可以试试这两种方式:
- 关闭所有模拟器实例,重新打开,让它加载最新的系统代理设置
- 或者直接在模拟器里手动配置代理:
- 打开模拟器的「设置」→「Wi-Fi」
- 点击当前连接的Wi-Fi(通常是「iPhone」或者你Mac共享的网络名称)
- 滑到最下方选择「配置代理」→「手动」
- 填写服务器为
127.0.0.1,端口10000,保存设置
2. 检查mitmproxy的运行状态
从你给出的终端输出看,mitmproxy已经监听在*:10000,但还是要确认几个点:
- 有没有其他程序占用了10000端口?在终端运行
lsof -i :10000,查看输出里是否只有mitmproxy的进程 - 确认启动mitmproxy的命令是否正确,比如是不是用了类似
mitmproxy -p 10000 -s mitm_script.py的命令,参数有没有写错
3. 安装并信任mitmproxy的根证书
大部分HTTPS请求抓不到都是因为证书问题,这一步很关键:
- 在模拟器的Safari里打开
mitm.it - 选择iOS对应的证书下载安装
- 安装完成后,去模拟器的「设置」→「通用」→「VPN与设备管理」,找到mitmproxy的证书并信任它
4. 先测试基础代理连通性
先不用打开你的应用,在模拟器的Safari里随便打开一个网页(比如https://example.com),看看mitmproxy的终端有没有日志输出:
- 如果Safari的请求能抓到,说明代理是正常工作的,问题出在你的应用本身(比如应用绕过了系统代理)
- 如果Safari也抓不到,那还是代理配置的问题,回到前面的步骤重新检查
5. 排查应用的网络配置
有些应用会绕过系统代理,比如:
- 使用了
NSURLSession的自定义配置,没有继承系统代理设置 - 用了第三方网络库(比如Alamofire),并且在配置中禁用了系统代理
这种情况下,你需要修改应用的网络代码,让它使用系统代理,或者手动指定代理地址为127.0.0.1:10000
内容的提问来源于stack exchange,提问作者ltoddy




