我正在尝试从我的root设备(4.4.4)捕获HTTPS流量,以分析应用程序的未记录协议。我已将我的Fiddler设置为代理并启用HTTPS嗅探。我在我的设备上安装了Fiddler生成的根证书。我在Android设备上为我的Wifi设置了代理。
当我运行浏览器并导航到任何HTTP或HTTPS站点时,Fiddler可以成功捕获流量。
当我运行一些应用程序时(例如我自己的应用程序使用Parse作为其后端),我可以看到服务器的所有HTTPS流量,已解密。到目前为止一切顺利。
当我尝试运行该特定应用时,我无法让Fiddler捕获其流量。以下是我对Fiddler的全部了解:
URL是一些IP地址:SSL(:443)。
我也尝试过使用ProxyDroid。有趣的是,我能够捕获流量一次,看到解密的HTTPS连接到该应用程序的服务器,但在此之后,它再也没有捕获。我知道该应用程序使用HTTPS,而不是未知/其他协议。
如何成功捕获HTTPS流量,为什么Fiddler会为该应用程序工作,然后突然停止工作?
答案 0 :(得分:3)
“默认情况下,面向API级别24和更高级别的应用不再信任用户或管理员添加的CA进行安全连接”
如果您要定位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
答案 1 :(得分:1)
它似乎特定于该应用。我成功地嗅到了所有其他应用程序。该特定应用程序可能使用SSL固定:它会在自身内部检查证书,即使设备信任它也不允许伪造证书。
答案 2 :(得分:1)
对于遇到此问题的其他人......
Fiddler停止在我的机器浏览器和设备上处理https流量。重新安装/重新启动Fiddler证书后,我的机器浏览器再次开始使用https工作,但设备仍然坏了。
为了让设备再次运行,我必须明确信任设备上的新证书,方法是使用设备的浏览器打开网站http://<adapter IP>:8888/FiddlerRoot.cer
,然后信任证书。 / p>
我找到了这个答案here。