最近,測試提出來這么一個(gè)問題,說公司android7.0以上的手機(jī)沒辦法抓包腰素,他們拿不到數(shù)據(jù)。很是尷尬雪营。 難道是因?yàn)閍ndroid7.0近兩年興起弓千?還是因?yàn)橐郧暗臏y試就根本沒抓包,卓缰,,
好了進(jìn)入正題砰诵,通過一波的查閱資料過后發(fā)現(xiàn):android7.0+的版本新增了證書驗(yàn)證征唬,https的安全證書手機(jī)端和電腦端都必須安裝,這個(gè)是前提茁彭;又由于android手機(jī)多廠商系統(tǒng)定制的問題总寒,可能有部分手機(jī)確實(shí)無法抓包,這里理肺,對于抓包的問題上摄闸,我們在給測試打包的時(shí)候要對我們的項(xiàng)目進(jìn)行添加設(shè)置: 默認(rèn)新任所有證書。
這個(gè)操作其實(shí)是比較敏感的妹萨,線上不能帶上這個(gè)配置年枕;下面來說一下相關(guān)配置項(xiàng):
1、在res-xml目錄中創(chuàng)建一個(gè)名為 “network_security_config.xml”的文件夾:并且附上如下內(nèi)容:
<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>
2乎完、在AndroidManifest里的<application>標(biāo)簽中熏兄,添加代碼:
android:networkSecurityConfig="@xml/network_security_config"
3、重新運(yùn)行項(xiàng)目,然后使用Charles抓包摩桶,成功桥状。(要是你抓包不成功,請百度一下硝清,如何使用Charles抓包辅斟,并且進(jìn)行相關(guān)配置)
關(guān)于android普通抓包的問題是解決了,發(fā)現(xiàn)一個(gè)新問題:android7.0以上的手機(jī)芦拿,開著網(wǎng)絡(luò)代理訪問不了詳情頁(webview)
我們需要在webview的WebViewClient中士飒,將下面這行代碼給注釋掉
super.onReceivedSslError(view, handler, error);
這一段代碼是為了忽略掉SSL證書錯(cuò)誤,因?yàn)殚_啟代理后網(wǎng)絡(luò)會(huì)變得不安全防嗡,證書會(huì)錯(cuò)誤变汪,webview檢測到證書錯(cuò)誤之后就直接讓webview白板,不請求任何數(shù)據(jù)蚁趁。 這一節(jié)是為了忽略掉父類的處理裙盾,然后默認(rèn)走下去。
這個(gè)問題其實(shí)還是挺棘手的他嫡。寫個(gè)博客記錄一下番官。