7

场景:我正在尝试通过 Fiddler 代理请求来调试 Android 应用程序。

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

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

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

我正在使用最新的 Fiddler4。

4

1 回答 1

2

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

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

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

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

  1. 在 Fiddler 中点击“Rules->Customize Rules”;
  2. 在脚本中找到函数 OnBeforeResponse
  3. 在函数体中添加以下代码:

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

于 2015-03-05T22:43:10.640 回答