說到抓包,這就是涉及到除錯和安全問題,對於 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...