端上日志看不到?用Charles這樣抓包也太爽了吧!
我們選擇Charles來作為抓包工具,本文將從0到1講解從電腦端抓包到手機端抓包。
Charles是一款被廣泛使用的網絡抓包工具,它可以用來監控和調試通過HTTP和HTTPS協議發送和接收的所有網絡請求和響應。Charles通常用于網頁和網絡應用的開發過程中,幫助開發人員理解他們的應用是如何與互聯網通信的,以及調試網絡相關的問題。
以下是Charles的一些核心特點和功能:
- 流量截獲: Charles能夠截獲計算機上的所有HTTP和HTTPS網絡流量,包括請求和響應。這使得開發人員能夠檢查他們的應用在網絡上傳輸的數據。
- 流量記錄: 所有通過Charles的流量都會被記錄下來,以便以后的查看和分析。
- SSL代理: Charles可以作為SSL代理服務器來解密HTTPS流量,這讓開發人員能夠檢查加密的通信內容。
- 帶寬限制: 可以模擬慢速網絡連接,以測試應用在不同帶寬限制下的表現。
- 重放和編輯請求: 不僅可以查看網絡請求和響應,還可以修改它們,然后發送到服務器以測試不同的情境。
- 斷點調試: Charles可以作為一個中間人攔截請求或響應,允許開發人員在這些數據到達服務器或返回到客戶端之前進行查看和修改。
- 映射本地文件: 將網絡請求重定向到本地文件,這可以加速前端開發,并不需要每次都從服務器獲取文件。
- 集成的Sniffer: Charles具備自動配置瀏覽器的能力,并能捕獲來自手機應用或其他使用網絡的軟件的流量。
- 跨平臺支持: Charles提供Windows、MacOS和Linux平臺的版本。
安裝
官網下載:https://www.charlesproxy.com/download/
從官網下載對應系統的 Charles 最新版本,雙擊下載的安裝包,一路默認安裝,安裝完成會在桌面生成類似花瓶的圖標。
接下來就進入到Charles中,然后做一些最基本的配置。
在自己電腦上抓包很簡單,在proxy中打開macOs代理就可以抓到本機上所有的包了。
圖片
然后在電腦上訪問一下掘金的首頁,就會抓到所有的接口:
圖片
這里我已經提前在電腦上裝了Charles的證書,否則https的接口是抓不了的,我們來配置一下電腦上的證書:
圖片
然后會自動打開Mac上的鑰匙串訪問,我們將這個證書設置為始終信任,否則走代理是拉不到https的數據的。
圖片
到這里電腦端的抓包就OK了。
但是我們的應用場景大部分是在手機端上,因為電腦上可以直接在控制臺去看日志,而在App、小程序如果沒有后臺監控是無法抓到接口的信息的,接下來我們配置一下。
要想手機上抓包,我們先把macoc proxy選項勾掉,這樣電腦上就不會進入到Charles的抓包記錄中了。
然后在SSL Proxying Settings中配置手機上想要抓包的訪問域名和端口,這里域名直接設置*,端口設置443,抓https的包。
圖片
然后在Proxying Settings中配置電腦端代理的地址和端口,用于手機連接。
圖片
接下來打開手機,我的是IOS,連接到和電腦端同一個wifi,然后開啟代理,代理的服務器地址和端口就是上面配置的地址和端口,就像這樣:
圖片
至此電腦和手機已經關聯上了,訪問的是同一個局域網,Charles上也可以抓到手機訪問的接口了,但是沒有數據,這是因為手機上也需要配置Charles安全證書。
圖片
點擊以后手機上會有安裝的提示,IOS比較特殊,高版本的情況在安裝以后還需要在設置中信任一下證書才可以生效。
圖片
至此所有配置就都搞定了,你可以試試手機訪問網頁,看看Charles,如果有異常的話,可以嘗試重啟手機和Charles,在手機端打開掘金App,抓到的包如下:
圖片
到這里就都搞定了,我們進入淘寶里看看:
圖片
到這一步,你想抓端上哪個應用的數據就都可以搞定了,如果上面的配置走完還是不行,嘗試一下以下排查方案。
- 證書問題:
證書未被客戶端信任:確保服務器使用的證書是由一個客戶端信任的證書頒發機構(CA)簽發的。
證書已過期:檢查證書的有效日期,確保它是當前有效的。
錯誤的證書名稱:證書上的名稱需要和服務器的域名一致,否則客戶端將無法驗證服務器的身份。
- 中間證書缺失:
服務器需要發送完整的證書鏈,包括所有的中間證書。如果有缺失,客戶端可能無法建立信任鏈。
客戶端不支持服務器的加密算法:
確保服務器的加密設置和客戶端支持的算法兼容。在某些情況下,舊的或不安全的加密方法可能已被客戶端禁用。
配置錯誤:
服務器的SSL/TLS配置可能存在錯誤,需要仔細檢查SSL/TLS服務器配置。
SNI 問題(Server Name Indication):
如果服務器上托管了多個域,并且使用了基于SNI的擴展,確??蛻舳苏埱笾邪苏_的服務器名稱。
客戶端問題:
客戶端操作系統或應用程序可能受到了限制或配置不正確,無法處理當前的SSL/TLS連接請求。