1. 程式人生 > >抓包神器Charles從入門到精通

抓包神器Charles從入門到精通

簡介

Charles是一款執行在你自己計算機上的web代理與抓包工具。它可以有效地獲取HTTP通訊資訊,主要用於網頁的開發和除錯等,強大又多元功能是每個程式設計師必備的利器,如果免費就完美了。
官網
https://pan.baidu.com/s/1dEBXMil Charles 4.0.1 Mac破解版 密碼:6540

Charles主要功能

  • 支援SSL代理。可以擷取分析SSL的請求。
  • 支援流量控制。可以模擬慢速網路以及等待時間(latency)較長的請求。
  • 支援AJAX除錯。可以自動將json或xml資料格式化,方便檢視。
  • 支援AMF除錯。可以將Flash Remoting 或 Flex Remoting資訊格式化,方便檢視。
  • 支援重發網路請求,方便後端除錯。
  • 支援修改網路請求引數。
  • 支援網路請求的截獲並動態修改。
  • 檢查HTML,CSS和RSS內容是否符合W3C標準。

破解步驟

  1. 開啟dmg映象,將“Charles.app”拖入應用程式中;
  2. 開啟應用程式—右鍵“Charles.app”顯示包內容—Contents—Java;
  3. 將dmg映象包內的“charles.jar”替換覆蓋到第二步的Java資料夾中;
  4. 開啟“Charles.app”,等待30秒,選單欄中找到“Help”—“Register…”,輸入任意資訊完成註冊;
  5. Have done!
  6. 系統版本要求:OS X 10.7 或更高。

開始抓包

設定代理

Charles 4.0.1版本啟動介面
20180110151557010934553.png

把電腦設定為代理
20180110151557022114563.png

通過瀏覽器請求的網址都會出現在這裡,iOS模擬器的所有的網路請求也會出現在這裡。點選某一個網址後,你會發現右邊會出現這個網址請求的大概資訊,點選具體的請求後會出現request和response等資訊

20180110151557025895015.png

中文亂碼

如果你發現返回的是亂碼,首先看是在http請求還是https請求,如果是http請求,那麼應該就是返回來的中文亂碼,解決方案是找到該軟體顯示包內容,Contents目錄下的info.plist,開啟檔案找到vmoption,新增-Dfile.encoding=UTF-8即可。
20180110151557031697096.png
如果是https請求出現的亂碼,如下圖這種情況

20180110151557037471481.png

CA證書

這時候你就需要安裝Charles的CA證書了,首先到去 http://www.charlesproxy.com/ssl.zip 下載CA證書檔案。雙擊crt檔案,選擇總是信任就可以了,當然如果要抓取iPhone裝置上的HTTPS請求,需要在iPhone上也安裝一個證書,在手機瀏覽器輸入這個網址:http://charlesproxy.com/getssl ,點選安裝即可。然後你就可以告別那煩人的亂碼,可以愉快地抓包了。如果這時候你還是抓不了的話,檢查一下Proxy-->SSL Proxying Settings是否設定OK,設定參考下圖:

抓取真機上的包

終端獲取IP

抓取真機上的資料非常的簡單,首先使手機和電腦在一個區域網內,不一定非要是一個ip段,只要是同一個路由器下就可以了。按照上面說的把證書安裝好,然後找到電腦的IP,你可以選擇在終端輸入ifconfig en0來獲取,也可以選擇開啟網路偏好設定來檢視。
20180110151557052165037.png

埠號配置

網路偏好設定檢視IP
接下來開啟Charles的代理設定:Proxy->Proxy Settings,設定一下埠號,預設的是8888,這個只要不和其他程式的衝突即可,並且勾選Enable transparent HTTP proxying。
20180110151557546015006.png

在手機上連線上和電腦在同一區域網的網路上設定HTTP代理。埠號就是剛剛在Charles上設定的那個。

20180110151557556558101.png

然後在手機上隨便開啟一個網址,這是Charles會彈出一個框讓你確認是否代理,點選allow就可以了,然後你就會在Charles上發現手機上的請求了。

過濾

預設方式

側邊欄選擇sequance -> filter 即可從所有請求包中篩選。

過濾管理

在 Charles 的選單欄選擇 Proxy->Recording Settings,然後選擇 Include 欄,選擇Add,然後填入需要監控的協議,主機地址,埠號,這樣就達到了過濾的目的。如下圖:
2018011015155765511746.png

焦點或忽略過濾

還有一種方法就是在一個網址上右擊。
選擇Focus,然後其他的請求就會被放到一個叫Other Host的資料夾裡面,這樣也達到了過濾的目的。
選擇ignore則忽略此包。
20180110151557696731107.png

斷點

在Charles發起一個請求的時候,我們是可以給某個請求打一個斷點的,然後來觀察或者修改請求或者返回的內容,但是在這過程中藥注意請求的超時時間問題。要針對某一個請求設定斷點,只需要在這個請求網址 右擊 -> Breakpoints 就可以斷點某一個請求了。

模擬網速慢

有時候在開發的時候我們想要模擬一下網路慢的情況,這時候Charles他是可以幫助到你的,在Proxy->Throttle Setting,然後選擇Enable Throttling,在Throttle Preset下選擇網路型別即可,具體設定你可以自行拿捏。

代理轉發

請求重定向的作用是什麼呢?開發中一般都是測試環境,如果我們想對比一下和線上版本的區別的話,可以講測試的請求重定向到正式環境下。在選擇 Tools-> Map Remote

內容替換

有時候我們會測一下請求的引數不同會帶來不同的返回結果以測試是否達到業務需求,或者需要不同的返回結果來驗證我們對資料的處理是否正確,這時候需要後臺的同事配合,但是有了Charles,我們可以自己把控介面返回來的內容,比如資料的空與否,資料的長短等等。在Tools->Rewrite Settings下: