android - 为什么有些 HTTPS 请求无法在 Fiddler 上解密,而有些可以?

标签 android ssl https fiddler

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

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

我已经仔细检查“隐藏图像”是否已关闭等。检索到的图像托管在与应用程序通信的主要 API 之外的另一个域中。

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

我使用的是最新的 Fiddler4。

最佳答案

有很多教程介绍如何使用 Fiddler 拦截来自 Android 的 HTTP(s) 流量。 试试这个: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。

关于android - 为什么有些 HTTPS 请求无法在 Fiddler 上解密,而有些可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16277913/

相关文章:

authentication - 客户端证书认证

android - 无法解析符号 'R' Android Studio 3.0

当我想播放自定义语音消息时,Android 和静音音乐

android - com.android.server.autofill.RemoteFillService$PendingRequest.cancel() 上的 NPE

asp.net - 通过 WSS 连接时无法创建 SSL/TLS 安全通道,仅在 Azure 上

带有 pfx 证书的 Java 打开 HttpsUrlConnection

tomcat - 仅对基于 servlet 的 webapp 中的某些页面使用 HTTPS

java - 当 Android Activity 失去焦点时,如何隐藏或显示布局元素?

android - 如何使 WebView 每次重新加载页面时显示 SSL 错误?

ssl - Heroku SSL 主机不工作(Heroku | 没有这样的应用程序)