抓取 https 的數(shù)據(jù)
如果使用的是其他手機(jī),那么按照常用方法抓就行了
1、電腦 charles 安裝證書,設(shè)置證書「信任」為 始終信任,啟用 SSL 代理,并配置代理的網(wǎng)段~
2、手機(jī)配置好跟電腦一樣的網(wǎng)段,然后 端口配置成8888,然后訪問 charles 提供的網(wǎng)址,下載證書。
網(wǎng)址大致是chls.pro/ssl,不過還是要以自己看到 charles 的提示為準(zhǔn)
這里特別要注意,千萬不要使用小米自己的瀏覽器下載這個(gè)證書,而是要使用其他瀏覽器,這樣下載下來的證書才是 .pem后綴的,這里要特別注意
而且也不要在電腦端去下載手機(jī)端的這個(gè)證書,否則也會(huì)影響效果(只能使用指定證書的方法抓取數(shù)據(jù))
3、手機(jī)、電腦都安裝好證書之后,還差最后最關(guān)鍵的一步:進(jìn)行網(wǎng)絡(luò)安全配置
在 android 項(xiàng)目中的 res>xml 下新建一個(gè) xml 文件,文件名隨意,如果沒有xml 文件夾,自己新建一個(gè)
比如我的文件名是:network_security_config.xml
然后里面配置上如下內(nèi)容
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!-- 支持 Android 9.0 以上使用部分域名時(shí)使用 http -->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">host地址(改成自己項(xiàng)目的)</domain>
</domain-config>
<!-- 支持 Android 7.0 以上調(diào)試時(shí),信任 Charles 和 Fiddler 等用戶信任的證書 -->
<debug-overrides>
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
其中只有 host地址(改成自己項(xiàng)目的)這個(gè)部分改成自己的 主機(jī)地址,其余地方不變,這個(gè)配置的意思就是 允許所有 調(diào)試 版本的app進(jìn)行 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>
這個(gè)就一點(diǎn)不需要改了,不過不建議這樣寫哦,以免發(fā)版時(shí)忘記注釋,倒置自己的數(shù)據(jù)被抓取到了。
然后,將此文件的路徑配置到清單文件的 Application 標(biāo)簽中即可
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>