为什么有些HTTPS请求无法在Fiddler上解密,而有些却有效?

场景:我试图通过Fiddler代理请求调试Android应用程序。

我在Android设备上安装了FiddlerRoot证书,SSL解密适用于大多数请求 ,但对于其他请求,我只能看到HTTPS Connect,而Fiddler日志中没有其他内容。 我认为这可能是基于SSL的图像请求无法解密。

我已经仔细检查了“隐藏图像”是否已关闭等。检索到的图像托管在另一个域上,而不是应用程序与之对话的主API。

什么可能导致这种行为? 如何在Fiddler中显示图像请求?

我正在使用最新的Fiddler4。

有很多关于如何使用Fiddler拦截来自Android的HTTP流量的教程。 试试这个: http : //docs.telerik.com/fiddler/configure-fiddler/tasks/configureforandroid

但是,当您尝试拦截和解密来自应用程序而不是来自浏览器的Android SSL流量时,它将失败。

可能是应用程序使用证书固定 – 您可能无法破译此连接。 丢失的原因! 但更可能的原因是HttpsUrlConnection管道实现中的一个错误。

要解决此问题,请继续执行以下步骤:

  1. 在Fiddler中,单击“规则 – >自定义规则”;
  2. 在脚本中查找函数OnBeforeResponse
  3. 将以下代码添加到函数体:

    if (oSession.oRequest["User-Agent"].indexOf("Dalvik") > -1 && oSession.HTTPMethodIs("CONNECT")) { oSession.oResponse.headers["Connection"] = "Keep-Alive"; } 
  4. 保存文件并重新启动Fiddler。