請求抓包對于程式員調試代碼必不可少,Charles是一個用于抓包的好工具(也可以使用Fiddler),Charles抓包是通過中間人代理實作,在用戶端和服務端通信時,Charles會截取用戶端發送給服務端的請求,然後僞裝成用戶端與服務端進行通信,服務端傳回資料時,Charles會截取資料僞裝成服務端将資料發送給用戶端。
Charles的安裝比較簡單,根據應用安裝過程的提示,安裝即可,不再贅述。主要講一下Charles手機抓包的配置。
首先保證需要抓包的手機和安裝Charles的電腦在同一個區域網路之中(比如,使用同一個WiFi)。
打開Charles,點選<code>Proxy-Proxy Settings</code>,設定端口,Charles會占用該端口啟動一個服務。勾選<code>Support HTTP/2</code>

配置手機代理,點開手機連接配接wifi的進階選項,代理設定為手動,填寫IP和端口,端口即為上一步驟中設定的端口,如8888. IP位址為安裝Charles電腦的位址,可通過<code>ipconfig</code>指令查詢。
給電腦安裝Charles證書,否則打開Charles後電腦浏覽器不能正常上網。(原因是Charles僞裝成中間人,浏覽器不信任Charles的證書,報錯“您的連接配接不是私密連接配接”)
打開Charles,<code>Help-SSL Proxying-Install Charles Root Certificate</code>
具體安裝過程可參考Charles根證書安裝
手機安裝Charles根證書
如果需要抓包HTTPS請求并解密,需要在手機上安裝Charles根證書,以讓手機信任Charles。
打開手機浏覽器,輸入<code>http://chls.pro/ssl</code>下載下傳charles證書。
打開手機設定-安全與隐私-加密與憑據-從儲存設備安裝,選擇下載下傳的證書檔案安裝即可。
一般按照上述小節配置就可以實作對HTTPS請求的抓包和資料解密。但是Android 7版本及以上的系統,不再信任使用者級的證書,隻信任系統級的證書。即便是按照上述操作安裝了Charles的根證書,發現HTTPS請求也無法正常解析,會有<code>Unknown</code>報錯,Charles的Note會提示<code>You may need to configure your browser or application to trust the Ch</code>.
此類場景,需要給Android7及以上的手機安裝系統級證書,來實作HTTPS的抓包。
需要抓包的手機已完成Root。
需要安裝好Openssl工具(可以在Linux伺服器上完成,或者是通過win10的WSL來操作)
adb工具(下載下傳位址)
将通過<code>http://chls.pro/ssl</code>下載下傳的證書(一般字尾為<code>.pem</code>)上傳到安裝有<code>openssl</code>的機器上。
執行<code>openssl</code>指令重命名證書名稱
該指令會輸出一個簽名,找到其中的hash值進行複制。如下文中的<code>2598f6a3</code>。
重命名證書檔案。
使用Adb工具将字尾為0的證書上傳到手機<code>/system/etc/security/cacerts/</code>目錄下。
通過資料線将手機連接配接到電腦上,并打開開發者調試。
将上述字尾為0的證書檔案放在<code>adb</code>工具的安裝目錄下,打開windows終端(windows+R 輸入 cmd)
執行
如果執行<code>cp</code>指令時出現<code>Read-only file system</code>錯誤,需要将<code>system</code>挂載為可讀寫。執行指令:
如果執行該指令報錯<code>mount -o rw,remount /system /system’ not in /proc/mounts</code>,執行下一條指令,簡單粗暴解決。
然後繼續執行<code>cp</code>指令
重新開機手機,即可對HTTPS完成資料抓包和解密。
(10條消息) 給Android7及以上的手機安裝系統級證書,實作Fiddler或者其他程式的HTTPS的抓包_一碗單炒飯的專欄-CSDN部落格_安裝系統證書
安卓7.0以上手機寫入安全證書 - 閱曆即魅力 - 部落格園 (cnblogs.com)
(10條消息) mount -o rw,remount /system /system’ not in /proc/mounts_csdn13034551515的部落格-CSDN部落格
(10條消息) 使用Charles代理工具導緻電腦無法正常通路網站(您的連接配接不是私密連接配接)_mengzhiyuan93的部落格-CSDN部落格_charles 您的連接配接不是私密連接配接