Android 7 0 https 抓包實現

2021-08-25 08:33:24 字數 2333 閱讀 2143

說到抓包,這就是涉及到除錯和安全問題,對於 android 7.0 (api 24 )以下,你可以直接使用 charles 安裝相關證書配置好**後直接實現。但是在 android 7.0 之後,google推出更加嚴格的安全機制。

至於具體怎麼配置,google 官方給出超級全面解釋,官方連線

。簡單分析下,為什麼在 7.0 之後,在手機內直接安裝證書沒效果呢?這是 6.0 預設配置:

cleartexttrafficpermitted="true">

src="system" />

src="user" />

trust-anchors>

base-config>

然後這是 7.0 預設配置:

cleartexttrafficpermitted="true">

src="system" />

trust-anchors>

base-config>

區別顯而易見,我們在手機裡自己安裝證書,就是對應在 user 域,對於 7.0 來說,預設是直接不信任。所以,你裝**證書失去意義。那要解決 7.0 不能抓包除錯這個問題,你可以直接配置出這檔案,選擇上面 6.0 預設配置方式,信任來自 user 域證書。這樣,你就又可以抓包除錯。上面方式最為簡單,但是也有一些安全問題。比如說,你這麼一配置,其實相當於否定 google 為 7.0 https 增強的安全策略。而且這麼一來,你的 https 請求任何人都可以抓包,這有什麼意義呢?

接著介紹 google 針對這一問題,給出建議:

src="@raw/user"/>

trust-anchors>

debug-overrides>

這個就是我們在除錯時可以信任的證書。

您可以通過使用debug-overrides指定僅在

true時才可信的僅除錯 ca。通常,ide 和構建工具會自動為非發布版本設定此標記。

另外像禁止明文通訊固定證書等高階設定,你也可以在官方文件中看到明確示例,這裡就不再展開。

說完除錯需求,接著談談安全問題。https抓包,對於自家開發人員來說,這個是開發除錯,但是,對於其他人來說,這個就存在重要資料洩漏等安全問題,這就是典型的中間人劫持。所以我覺得 android 7.0 對於證書信任這一塊的細化,的確可以提公升應用安全性。我們開發者也不能圖一時方便,留下安全隱患。

回到具體場景,如果應用上線後,出現一些問題,你懷疑是正式環境資料有問題,這時候就想抓包看下,那麼應該怎麼處理呢?

這裡需要注意,使用.sslsocketfactory()配置相關證書優先順序最高除此之外如果你覺得安裝證書,手動設定**還是麻煩來,有沒有什麼更加簡單的除錯方式,咳咳,還真有喲,stetho

stetho.initializewithdefaults(this);
第二步在okhttp建立時,新增乙個addnetworkinterceptor,請注意,這裡是addnetworkinterceptor()。之後你就可以在瀏覽器裡去看看資料情況啦。

到這裡,簡單總結下:

解決 Android7 0 無法抓Https包

最好選擇偏原生的系統推薦谷歌 其次一加 魅族 小公尺 系列手機 建議刷pixel系統 首先手機需要獲取root許可權 adb命令將抓包工具證書從使用者目錄移動至系統目錄 連線手機進入shell模式 root許可權 su adb shell 進入使用者證書目錄 cd data misc user 0 ...

Android7 0以上系統抓取https介面

不可抓取原因 7.0以後基本上只會識別系統級證書,而普通直接安裝的證書為使用者級,故抓取不到https介面 需求 android手機需要root 需要手機系統目錄system的許可權 1 fiddle生成cer證書,獲取雜湊值 將證書傳值linux系統中,直接執行openssl x509 infor...

CI上動態配置是否支援https7 0抓包

最近遇到個需求,需要抓取https包,在windows下,主要是通過 fiddler工具抓包,驗證伺服器返回的資料是否正確。需要注意的地方是,因為google在7.0之後修改了安全許可權,對於非ca授權的https證書,需要手動設定 按照官方建議如下 res xml network security...