场景:我正在尝试通过 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 管道实现中的错误。
要解决此问题,请继续执行以下步骤:
- 在Fiddler中点击“规则->自定义规则”;
- 在脚本中找到函数OnBeforeResponse
在函数体中添加如下代码:
if (oSession.oRequest["User-Agent"].indexOf("Dalvik") > -1 && oSession.HTTPMethodIs("CONNECT")) { oSession.oResponse.headers["Connection"] = "Keep-Alive"; }
保存文件并重启 Fiddler。
关于android - 为什么有些 HTTPS 请求无法在 Fiddler 上解密,而有些可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16277913/