在Fiddler中捕获Parallels虚拟机流量的问题排查
解决Parallels虚拟机中libcurl类工具的Fiddler流量捕获问题
环境配置
- 主机:MacOS Sonoma
- 虚拟机:Parallels运行的Windows系统
- 捕获工具:Mac主机上的Fiddler Everywhere / tcpdump
问题描述
尝试捕获Windows虚拟机中游戏的流量,已设置系统代理指向Fiddler端口,浏览器等遵循系统代理的程序流量可正常捕获,但游戏使用的libcurl/wget类工具不遵循系统代理,无法被Fiddler捕获。测试场景:
- 正常:虚拟机浏览器访问
https://my.cool.app.com/,Fiddler可捕获 - 异常1:命令行执行
curl https://my.cool.app.com/,Fiddler无记录,但tcpdump可捕获 - 异常2:将Fiddler设为系统代理,仍无法拦截curl流量
已尝试设置https_proxy环境变量,仅能看到CONNECT请求,但curl报错:
curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - The revocation function was unable to check revocation for the certificate.
导入Fiddler根证书到Windows证书存储、修改注册表均无效。
核心原因
- libcurl/wget等工具默认不读取系统代理配置,需显式指定代理
- Windows的schannel加密库默认会检查证书吊销列表(CRL),而Fiddler本地生成的根证书无有效CRL地址,导致验证失败
解决方案
方案1:curl命令显式指定代理并跳过吊销检查(快速测试)
执行curl时添加代理参数和吊销检查禁用参数:
curl https://my.cool.app.com/ -x http://[Mac主机IP]:[Fiddler监听端口] --ssl-no-revoke
此方法仅对单条curl命令生效,适合快速验证。
方案2:全局禁用Windows证书吊销检查(长期生效)
- 打开Windows组策略编辑器:按下Win+R,输入
gpedit.msc回车 - 导航路径:计算机配置 > 管理模板 > 系统 > Internet通信管理 > Internet通信设置
- 找到「关闭自动根证书更新」,设置为已启用
- 继续导航:计算机配置 > Windows设置 > 安全设置 > 公钥策略 > 证书路径验证设置
- 切换到「吊销」选项卡,勾选「允许吊销服务器脱机工作」,并选择「不检查证书吊销」
- 重启Windows虚拟机使设置生效
方案3:配置Fiddler证书的CRL分发点(规范做法)
- 在Mac主机的Fiddler Everywhere中,进入设置 > HTTPS > 证书生成
- 在「CRL分发点(CDP)」字段,填写Windows虚拟机可访问的地址(例如
http://[Mac主机IP]:8080/crl.pem,需确保主机有对应HTTP服务提供CRL文件) - 点击「重新生成证书」,将新的
Fiddler_Root_Certificate_Authority.crt导入Windows证书存储(先删除旧证书) - 验证虚拟机可访问填写的CDP地址
方案4:Parallels桥接模式+Fiddler透明代理(捕获所有流量)
此方法无需配置代理环境变量,强制所有流量经过Fiddler:
- 打开Parallels虚拟机设置,将网络改为桥接模式,使虚拟机与主机处于同一局域网
- 在Fiddler Everywhere中,进入设置 > 代理,开启「透明代理」功能
- 在Windows虚拟机的网络设置中,将默认网关修改为Mac主机的IP地址
- 确保Fiddler已信任所有HTTPS流量(设置 > HTTPS > 捕获HTTPS流量)
验证
完成配置后,执行curl https://my.cool.app.com/或运行游戏,检查Fiddler会话列表是否出现对应流量。
内容的提问来源于stack exchange,提问作者MrDuk
相关产品推荐
相关产品推荐

