从 Fiddler 嗅探 Android 应用程序的 HTTPS 流量失败,Fiddler 中只有 'Tunnel To' 个条目

Sniffing Android app's HTTPS traffic from Fiddler fails with only 'Tunnel To' entries in Fiddler

我正在尝试从我的 Android 设备 (4.4.4) 中捕获 HTTPS 流量,以分析应用程序的未记录协议。我已经将我的 Fiddler 设置为代理并启用了 HTTPS 嗅探。我已经在我的设备上安装了 Fiddler 生成的根证书。我已经在我的 Android 设备上设置了我的 Wifi 代理。

URL 是一些 IP addresses:SSL (:443)。

我也试过使用 ProxyDroid。有趣的是,我能够捕获流量 一次 ,看到一个解密的 HTTPS 连接到该应用程序的服务器,但在那之后,它再也没有捕获过。我知道该应用程序使用 HTTPS,而不是 unknown/other 协议。

如何成功捕获 HTTPS 流量,为什么 Fiddler 曾经为该应用工作,然后突然停止工作?

它似乎特定于该应用。我成功地嗅探了所有其他应用程序。该特定应用程序可能使用 SSL 固定:它会在自身内部检查证书,并且不允许伪造证书,即使它已被设备信任。

对于遇到此问题的任何其他人...

Fiddler 停止处理我的机器浏览器和设备上的 https 流量。 reinstalling/retrusting Fiddler 证书后,我的机器浏览器再次开始使用 https,但设备仍然损坏。

为了让设备再次工作,我必须明确信任设备上的新证书,方法是使用设备的浏览器打开站点 http://<adapter IP>:8888/FiddlerRoot.cer,然后信任该证书。

我找到了这个答案 here

"Apps that target API Level 24 and above no longer trust user or admin-added CAs for secure connections, by default"

如果您的目标是 API >=24 或 运行 >= 24 设备,请使用以下内容创建 xml 资源:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Trust user added CAs while debuggable only -->
            <certificates src="user"/>
        </trust-anchors>
    </debug-overrides>
</network-security-config>

将其命名为 "network_secutrity_config.xml" 或类似名称,并使用 android:networkSecurityConfig 标记添加 id 作为对清单的引用。

您可以在这里阅读更多内容(对我有帮助):

https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html