我试图从我的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会为该应用程序工作,然后突然停止工作?
3 回答
"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资源:
将其命名为“network_secutrity_config.xml”或类似名称,并使用android:networkSecurityConfig标记添加id作为对清单的引用 .
你可以在这里阅读更多内容(它帮助了我):
https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html
对于遇到这个问题的其他人......
Fiddler停止在我的机器浏览器和设备上处理https流量 . 重新安装/重新调整Fiddler证书后,我的机器浏览器再次开始使用https,但设备仍然坏了 .
为了让设备再次运行,我必须明确信任设备上的新证书,方法是使用设备的浏览器打开网站
http://<adapter IP>:8888/FiddlerRoot.cer
,然后信任证书 .我找到了这个答案here .
它似乎特定于该应用程序 . 我成功地嗅到了所有其他应用程序 . 该特定应用程序可能使用SSL固定:它在自身内部检查证书,即使设备信任它也不允许伪造证书 .