抓取 https 的数据
如果使用的是其他手机,那么按照常用方法抓就行了
1、电脑 charles 安装证书,设置证书「信任」为 始终信任
,启用 SSL 代理,并配置代理的网段~
2、手机配置好跟电脑一样的网段
,然后 端口配置成8888
,然后访问 charles 提供的网址,下载证书。
网址大致是chls.pro/ssl
,不过还是要以自己看到 charles 的提示为准
这里特别要注意,千万不要使用小米自己的浏览器
下载这个证书,而是要使用其他浏览器,这样下载下来的证书才是 .pem
后缀的,这里要特别注意
而且也不要在电脑端去下载手机端的这个证书,否则也会影响效果(只能使用指定证书的方法抓取数据)
3、手机、电脑都安装好证书之后,还差最后最关键的一步:进行网络安全配置
在 android 项目中的 res>xml 下新建一个 xml 文件,文件名随意,如果没有xml 文件夹,自己新建一个
比如我的文件名是:network_security_config.xml
然后里面配置上如下内容
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!-- 支持 Android 9.0 以上使用部分域名时使用 http -->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">host地址(改成自己项目的)</domain>
</domain-config>
<!-- 支持 Android 7.0 以上调试时,信任 Charles 和 Fiddler 等用户信任的证书 -->
<debug-overrides>
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
其中只有 host地址(改成自己项目的)
这个部分改成自己的 主机地址,其余地方不变,这个配置的意思就是 允许所有 调试 版本的app进行 https 的抓取
也就是说正式版本是抓不到的哦 ,如果想要抓正式版本,可以修改成
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" overridePins="true" />
<certificates src="user" overridePins="true" />
</trust-anchors>
</base-config>
</network-security-config>
这个就一点不需要改了,不过不建议这样写哦,以免发版时忘记注释,倒置自己的数据被抓取到了。
然后,将此文件的路径配置到清单文件的 Application 标签中即可
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
网友评论