Charles使用1
Charles是一款比較常用的全平臺的網絡封包街區工具,而我們在做移動開發的時候,我們為了調試、測試、分析等目的,經常需要和服務端的網絡通訊協議打交道。Charles可以幫我們截取網絡數據包來進行分析。
Charles通過將軟件本身設置成系統的網絡訪問代理服務器,使得所有的網絡請求都會走一邊Charles代理,從而Charles可以截取經過它的請求,然后我們就可以對其進行網絡包的分析。
用到的功能:
- 1.截取http和https網絡包
- 2.支持重發網絡請求,方便后端調試
- 3.支持修改網絡請求參數
- 4.支持網絡請求的截取以及動態修改請求響應結果。
5.支持模擬限流網絡
1.Charles的基本界面
1.1.structure視圖
structure視圖將網絡請求按請求的域名進行分類,將同域名的請求進行分類。
所有的請求是以域名進行分類顯示的,可以讓我們更關注同域名下的請求。當次域名下有接口連接被請求了,會閃一下,這樣就可以讓我們發現哪些域名下的數據正在被請求。
1.2.sequence視圖
sequence視圖模式下,會將所有的網絡請求都按照訪問的時間從上到下進行排序。
和structure一樣,很直觀的自暗示當前的請求連接、請求數據、響應數據等情況。因為這是按請求的先后順序進行有序的排列,Charles同時也提供了一個過濾請求的地方,可以通過它來簡單的過濾我們需要的請求再進行查看。
對于某一個具體的網絡請求,Charles提供了詳細的請求內容和響應內容,將發送的數據和顯示的數據顯示出來,對于一些常見的數據格式,Charles還提供了一些格式化的操作,例如json內容,可以切換到json標簽下,它會按照json的格式進行格式化,方便我們閱讀和查看,而圖片的請求也會在Charles中顯示縮略圖的預覽。
2.網頁抓包
啟動Charles后,需要將Charles設置為系統代理,選擇菜單中proxy——MacOS來講Charles設置系統代理。
然后你會發現,通過瀏覽器的請求都會被抓取。
3.截取移動設備的網絡封包
Charles通常本身是可以直接截取本機上的網絡封包的,但移動設備上的網絡請求同樣也需要去抓取,例如iPhone Android設備等。
3.1Charles對應設置
將代理功能打開,并設置一個固定的端口號。默認8888
proxy-proxy settings,查看當前或者修改當前代理端口,并保證Enable transparent HTTP proxying被勾選。
3.2手機上的設置
查看本機ip地址和Charles監聽的端口號
方法1:使用help-local IP address
方法2: ifconfig en0
打開手機Wi-Fi,填入IP和端口號
3.3截取https的網絡封包
app內使用https是非常常見的。正常情況下,Charles是不能截取到https的網絡包的。這設計到https的證書問題。
使手機可以抓取到https協議,需要安裝Charles的CA證書。
步驟:
- 1.在Mac上安裝CA證書。通過頂部菜單選擇:help——SSL Proxying——install Charles Root Certificate,來安裝CA證書。
- 2.iPhone和Android手機,安裝證書
android手機請查看該帖 - 3.在需要截取https的請求上,選擇Enable SSL Proxying。
完成上面的步驟依然抓取不了https的網絡包。主要的原因在于:CA證書需要被MacOs信任。
其他-鑰匙串訪問,查看CA證書
4.過濾
方法一:在Charles的菜單欄選擇Proxy——recording settings,然后選擇include欄,選擇add,然后填入需要監控的協議,主機地址,端口號,如下圖
方法二:在一個網址上右擊,選擇Focus,然后其他的請求就會被放到Other Hosts的文件夾里面,這樣也達到了過濾的目的。
5.模擬弱網
有時候在測試的時候我們想要模擬一下網絡慢的情況,這時候Charles他是可以幫助到你的,在Proxy->Throttle Setting,然后選擇Enable Throttling,在Throttle Preset下選擇網絡類型即可,具體設置你可以自行拿捏。
如果我們只想模擬指定網站的慢速網絡,可以再勾選上圖中的 “Only for selected hosts” 項,然后在對話框的下半部分設置中增加指定的 hosts 項即可。
6.修改網絡請求
有些時候為了調試服務器的接口,我們需要反復嘗試不同參數的網絡請求。Charles 可以方便地提供網絡請求的修改和重發功能。只需要選中以往的網絡請求,工具欄中點擊 “Edit”,即可創建一個可編輯的網絡請求。如下所示:
get
put
post
head
trace
delete
options
7.給服務器做壓力測試
我們可以使用 Charles 的 Repeat 功能來簡單地測試服務器的并發處理能力,方法如下:
我們在想打壓的網絡請求上(POST 或 GET 請求均可)右擊,然后選擇 「Repeat Advanced」菜單項,如下所示:
8.斷點
在Charles發起一個請求的時候,我們是可以給某個請求打一個斷點的,然后來觀察或者修改請求或者返回的內容,但是在這過程中要注意請求的超時時間。
要針對某一個請求設置斷點,只需要在這個請求網址右擊選擇Breakpoints,然后點擊斷點按鈕,就可以斷點某一個請求了。
參考出處:http://blog.devtang.com/2015/11/14/charles-introduction/
https://testerhome.com/topics/15117
FAQ
1.亂碼問題未解決
3.1以下版本,首先到去 http://www.charlesproxy.com/ssl.zip 下載CA證書文件。雙擊crt文件,選擇總是信任就可以了。
https://www.cnblogs.com/mrjade/p/7677051.html
2.Firefox在添加*:443后不能連接網絡的問題
安裝CA證書后保存為.cer文件
firefoxs——首選項——隱私與安全——查看證書
再次訪問百度,可以正常訪問。
轉載于:https://www.cnblogs.com/csj2018/p/9920399.html
總結
以上是生活随笔為你收集整理的Charles使用1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [leetcode] 101. 对称二叉
- 下一篇: 区分空气压缩机不同等级能效的意义是什么?