内容简介:最近升级了 targetSdkVersion 到 28 后发现在 Android 7.0 以上机型 Charles 抓取 https 包时显示找不到证书,但是 Android 6.0 机型还是可以正常抓包。原因是因为从 Android 7.0 开始,默认的网络安全性配置修改了,具体请阅读官方文档Android 6.0(API 23)及更低版本应用的默认网络安全性配置如下:而在 Android 7.0(API 24)及更高版本应用的默认网络安全性配置如下:
最近升级了 targetSdkVersion 到 28 后发现在 Android 7.0 以上机型 Charles 抓取 https 包时显示找不到证书,但是 Android 6.0 机型还是可以正常抓包。原因是因为从 Android 7.0 开始,默认的网络安全性配置修改了,具体请阅读官方文档 网络安全性配置 。
问题原因
Android 6.0(API 23)及更低版本应用的默认网络安全性配置如下:
<!-- 默认允许所有明文通信 -->
<base-configcleartextTrafficPermitted="true">
<trust-anchors>
<!-- 信任系统预装 CA 证书 -->
<certificatessrc="system"/>
<!-- 信任用户添加的 CA 证书,Charles 和 Fiddler 抓包 工具 安装的证书属于此类 -->
<certificatessrc="user"/>
</trust-anchors>
</base-config>
而在 Android 7.0(API 24)及更高版本应用的默认网络安全性配置如下:
<!-- 默认允许所有明文通信 -->
<base-configcleartextTrafficPermitted="true">
<trust-anchors>
<!-- 信任系统预装 CA 证书 -->
<certificatessrc="system"/>
</trust-anchors>
</base-config>
对比很容易发现,在 Android 7.0(API 24)及更高版本应用上,默认不再信任用户添加的 CA 证书,所以也就不再信任 Charles 和 Fiddler 抓包工具的证书,所以抓取 HTTPS 包时才会失败。
解决方式
所以解决该问题就需要应用信任 Charles 和 Fiddler 抓包工具的证书抓包工具即可。
最简单的解决方式是使用 Android 6.0 以下的网络安全性配置:
添加 res/xml/network_security_config.xml
:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-configcleartextTrafficPermitted="true">
<trust-anchors>
<certificatessrc="system"/>
<certificatessrc="user"/>
</trust-anchors>
</base-config>
</network-security-config>
然后在清单文件中指向该文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest...>
<applicationandroid:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
这种解决方式有一个安全风险:正式版的应用会有被他人抓包的风险。
如何只在调试模式下允许抓包呢?
使用 <debug-overrides>
即可实现只在 android:debuggable
为 true
时才生效的配置:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<certificatessrc="system"/>
<certificatessrc="user"/>
</trust-anchors>
</debug-overrides>
</network-security-config>
网上有些解决方式是将 Charles 和 Fiddler 的证书添加到 raw
文件夹下的方式也可以,但是繁琐了点。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 如何使用代理IP进行数据抓取,PHP爬虫抓取亚马逊商品数据
- 抓取 Grafana Panel 视图
- 常用 Windows 抓取Hash
- Python爬虫:抓取新浪新闻数据
- Python抓取花瓣网高清美图
- Python爬虫:抓取新浪新闻数据
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
响应式Web设计实践
[美] Tim Kadlec / 侯鸿儒 / 人民邮电出版社 / 2013-3-1 / 55.00元
随着各种各样的移动设备不断地涌现到使用者面前,Web设计的适应性已经成为设计师们所面临的最为艰巨的挑战。你设计出的网站不仅要在桌面计算机的大尺寸屏幕上可以为用户提供友好的UI和用户体验,同时在小尺寸屏幕上也应该可以提供一致的用户体验,并可以让用户能够在桌面大屏幕上和移动小屏幕上平滑切换,同时没有任何的不适应感觉。 本书作者是一位出色的开发者,在本书中,他将诸多技术和设计理念杂糅在一起,再辅以......一起来看看 《响应式Web设计实践》 这本书的介绍吧!