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

时间:2013-04-29 11:48:22

标签: android ssl https fiddler

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

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

我已经仔细检查过“隐藏图片”已关闭等。检索到的图片托管在应用程序与之对话的主API之外的其他域上。

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

我正在使用最新的Fiddler4。

1 个答案:

答案 0 :(得分:2)

有很多关于如何使用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。