如何在Android非Root設(shè)備上對(duì)App抓包調(diào)試
對(duì)于非Root的Android設(shè)備兼丰,CA證書(shū)只能安裝到用戶目錄劲藐,但是在Android 7.0之后,客戶端無(wú)法信任用戶目錄下的CA證書(shū),出現(xiàn)SSL握手失敗問(wèn)題姑曙。那么,如何解決呢迈倍?
前提條件:
- 要求具備目標(biāo)調(diào)試App的源碼修改權(quán)限伤靠。
- 本方案對(duì)Android原生App有效,對(duì)Flutter開(kāi)發(fā)的App無(wú)效啼染。
如果不符合上面的條件宴合,應(yīng)跳過(guò)本篇文章,查看Root設(shè)備的解決方案迹鹅。
安裝CA證書(shū)到用戶目錄
Reqable提供了非常詳細(xì)的用戶目錄CA證書(shū)安裝過(guò)程卦洽,你可以選擇通過(guò)電腦端Reqable或者手機(jī)端Reqable下載CA證書(shū),并通過(guò)指示完成CA證書(shū)的安裝斜棚。
如果是使用電腦端的Reqable阀蒂,最主要的一步是將Android設(shè)備連接到和電腦設(shè)備的同一個(gè)局域網(wǎng)中该窗,并在Android設(shè)備上設(shè)置Wi-Fi代理。這樣才能夠在Android設(shè)備上打開(kāi)瀏覽器下載CA證書(shū)蚤霞。如果無(wú)法完成這一步酗失,可以考慮在電腦端Reqable保存證書(shū)文件,然后使用ADB工具推送證書(shū)文件到手機(jī)争便。
如果是使用手機(jī)端的Reqable级零,在初始化Reqable時(shí)選擇協(xié)同模式并掃碼連接電腦端的Reqable,然后直接在手機(jī)端的Reqable中保存CA證書(shū)文件即可滞乙。
接下來(lái)奏纪,就是在手機(jī)上將上面保存的CA證書(shū)文件,安裝到用戶證書(shū)目錄斩启,操作步驟是:設(shè)置-> 安全 -> 加密與憑據(jù) -> 安裝證書(shū) -> CA證書(shū)序调。
配置網(wǎng)絡(luò)安全文件
下面這一步是最最最重要的,必不可少兔簇,不然上面安裝證書(shū)就白干了发绢。
使用Android Studio打開(kāi)目標(biāo)調(diào)試App的源碼項(xiàng)目,并打開(kāi)app目錄下面的build.gradle
或者build.gradle.kts
文件垄琐。
在dependencies中配置一行:
debugImplementation("com.reqable.android:user-certificate-trust:1.0.0")
重新編譯边酒,打出來(lái)的Debug包就可以正常抓包調(diào)試了。如果想調(diào)試Release包狸窘,把上面debug
去掉或者改成release
即可墩朦。
如果你是內(nèi)網(wǎng)或者無(wú)法訪問(wèn)maven中央倉(cāng)庫(kù),可以按照下面的方式手動(dòng)配置:
第一步:新建文件 res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?><network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> <certificates src="user" /> </trust-anchors> </base-config></network-security-config>
第二步:配置到 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest> <application android:networkSecurityConfig="@xml/network_security_config"> ... </application></manifest>