Fiddler在Android 7(root)以上系統(tǒng)的關鍵前置準備
【本文是給有一定Fiddler基礎的同學,如果你沒有基礎,快去學習一下Fiddler基礎吧】

一、導出證書
如果你的手機是Android7.0以下,可以按照以前的方法安裝,或者你沒有root,卻想使安裝的CA證書生效,找一部7.0以下的手機吧。
從安卓7.0開始,谷歌團隊進一步嚴格了CA證書的信任流程,這在下面的網(wǎng)址可以看到:
https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html
所以想要系統(tǒng)繼續(xù)信任我們的自己的證書,需要把CA證書安裝到系統(tǒng)分區(qū),這就需要root權限了。
打開Fiddler,選擇 Tools --> Options --> HTTPS --> Actions --> Export Root Certificate to Desktop,這時,桌面上會出現(xiàn)一個【FiddlerRoot.cer】的文件,而安卓并不能直接讀取這個文件,需要我們作轉換。
二、證書的轉換
在任何一臺裝有openssl的Linux主機,或者手機上的模擬終端,或者在windows下載openssl軟件,都可以完成以下的工作,這里我選用WSL
輸入以下命令(注意更改粉色字體為你自己的FiddlerRoot.cer路徑)
openssl x509 -inform der -in /mnt/d/FiddlerRoot.cer -out /mnt/d/FiddlerRoot.pem -outform pem
這時我們就生成了安卓需要的文件格式,但是,文件名還是不對,使用以下的命令獲取正確的文件名
openssl x509 -inform PEM -subject_hash_old -in /mnt/d/FiddlerRoot.pem | head -1
輸出是類似 e5c3944b 這樣的8位16進制數(shù)字,那么我們的文件名就是 【e5c3944b.0】
三、安裝證書
前面已經(jīng)講過了,需要安裝到系統(tǒng)分區(qū),這個分區(qū)的位置在?/system/etc/security/cacerts,使用任意一款文件管理器將剛剛的證書移到這個目錄下,并改權限為

退出,重啟手機。然后到設置里查看是否成功,安全 --> 信任的憑據(jù)?--> 系統(tǒng),找到

證明,安裝成功。
四、設置Fiddler
這是最為關鍵的一步,否則還是不能抓。打開Fiddler

prefs set fiddler.network.https.SetCNFromSNI true
之后回車,重啟Fiddler,之后按正常流程設置(比如改代理等基礎操作,這里不做解釋,可以看https://blog.csdn.net/qq_39720249/article/details/81069929),這時,就可以抓瀏覽器的數(shù)據(jù)包了。
但是這時可能會發(fā)現(xiàn)有一些APP還是不能抓?。ū热缍兑簦?,這就因為他們這些APP根本不去使用系統(tǒng)證書,而是自己去驗證證書,也叫證書固定,可以說就是為了防止抓包,這里可以用Xposed 模塊 JustTrustMe 來繞過(安卓10以下,而JustTrustMe也已經(jīng)從2016年1月以后沒有更新了),至于Xposed怎么使用,安卓10以上怎么辦,那就不在這篇文章的討論范圍了,對了,也不要用【手機FireFox瀏覽器】,也是驗證自帶證書,不去使用系統(tǒng)證書,到此,結束。