You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为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

火山引擎 最新活动