最近在學習瀏覽器代理和手機網絡抓包,涉及到了fiddler和charles,發現這個好文章,特此記錄:
本文轉載自:http://www.veryhuo.com/a/view/98081.html
Charles Proxy 通常稱爲Charles,Charles是目前最強大的http調試工具,在界面和功能上遠強於Fiddler,同時是全平臺支持,堪稱聖盃級工具,不過在這裏爲您提供了Charles和諧版,歡迎下載使用!官方是收費的,由於是java版本,自然可以通過修改響應的jar進行破解,網上已經有某些版本對應的破解jar,請自行搜索替換以破解。
安裝說明:
1、先安裝裏面的原版,然後copy charles.jar覆蓋到安裝目錄下的lib目錄即可!
2、需要注意的是,破解補丁不通用,不要用於新版本,否則會導致無法啓動。
啓動後,軟件界面如上圖。
Charles有個會話(session,不是指http中的session)的概念,可以理解爲瀏覽器中的tab,這個功能在需要調試多個站點頁面時很實用,當你刷新頁面的時候,只會在當前session中捕獲請求。
(PS:ctrl+N創建個新的session,ctrl+W關閉當前session)
Charles的代理服務器啓動就可以使用(會提示給firefox安裝插件),如果沒有捕獲到請求,請清理下瀏覽器緩存。
界面功能初探
工具條包含了Charles的大部分功能:
有幾個功能比較抽象,後面會詳細說明。
右鍵請求出現菜單,Charles的右鍵菜單功能比fiddler強大太多了。
雙擊請求進入列表視圖,類似fiddler,方便查看和過濾請求。
Charles的過濾查找功能非常贊,很快速:
請求詳情跟fiddler相似,但直觀不少:
工具視圖基本講解完畢,接下來我們用Charles做點事情。
本地代理和遠程代理
Charles的代理服務器端口跟fiddler一樣都是8888,即你的本機ip:8888。
我們的目標將一個壓縮文件代理成本地的源碼文件。
點擊“Map Local”後:
index-min.js代理成index.js,刷新頁面試試。
代理成功,so easy!
Charles的樹狀視圖比fiddler的列表視圖好的地方在於,多次刷新後的請求會被歸納到樹裏面,更加一目瞭然,用fiddler的時候,有點強迫症的同學,都要點擊clear,有木有…
Charles是支持子目錄代理哦,非常實用的功能:(使用通配符*)
本地地址選擇個子目錄,不需要通配符。
如何判斷是否代理成功呢?
這點Charles比fiddler人性化多了。
校驗是否代理成功,最省力的方式是點擊工具條上的刷新按鈕,刷新單個請求,如果代理成功,Charles會往“Notes”界面打個log,比如Mapped to local file: C:\www\htdocs\gallery\uploader\1.5\build\index-min.js。
去除代理配置
小技巧:所有的配置開關都可以通過工具條上的“工具”設置(倒數第二個按鈕)。
去掉代理配置:
小技巧:建議開啓No Caching,不緩存請求。
mobile代理功能
手機或平板頁面的調試,我們需要把請求代理到pc端的Charles上。
必須確保mobile端和pc端連的是相同的無線網絡。
ios的配置非常簡單
(上圖借用我同事自寒的截圖)
服務器ip設置成pc的ip,端口好設置成8888即可。
然後mobile終端可以刷新試試。
安卓機器的代理
首先,安卓機器必須有root權限,其次需要藉助app才行,在安卓的任意市場搜索 ProxyDroid,灰常好用的代理app。
有些瀏覽器是自帶了代理配置功能,比如opera mobile,輸入opera:config ,不過我試了下沒代理成功,不知道是不是手機問題。
wp8的代理設置也很簡單,手機連接wifi 並進行設置下 設置–WiFi–長按連接好的WIFI–彈出編輯選項。
試試遠程代理
代理配置
Charles支持https和sockets的代理,還支持SSL,非常全面。
網速模擬功能
throttle功能對於前端來說非常實用,可以看頁面在低網速下的表現,從而找出優化的點。
在線上環境通常有些因爲網速慢導致的bug,在本機無法重現,那時候就很抓瞎,如果嫌遠程麻煩,推薦使用throttle。
首先先配置下throttle。
我們要看頁面在3G環境下的表現:
(Charles的預配置對於中國的網絡環境並不準確,電信、移動、網通的速度還有有明顯差異。)
解析下圖上幾個配置的含義:
Bandwidth(帶寬)、Utilistation(利用百分比)、Round-trip(往返延遲)、MTU(字節)(MTU的說明請看百度百科)。
斷點功能
Charles另一個非常實用的功能,對於開發者和測試人員來說,堪稱神器。Charles能夠斷到發送請求前(篡改Request)和請求後(篡改Response)。
場景:ajax發送請求,我們需要測試接口的各種邊界情況,比如出錯、超時等表現,Charles的斷點+隨意篡改,非常方便測試。
upload.php是我們要測試的上傳接口,右鍵選擇“BreakPoints”,開啓斷點。
小技巧:不用在web界面中操作,使用repeat功能,就可再次發送一樣的請求:
斷點列表查看
可以指定斷點“get”請求還是“post”請求。
重複發送請求
repeat功能對於測試同學特別有用,可以檢驗接口的健壯性。
repeat功對於前端的價值是不需要刷新頁面,只需要repeat請求,比如檢驗代理是否成功,修改請求後執行等。
“repeat”重複發送一次請求。
“repeat Advances”可以自定義重複次數和重複間隔。
捕獲記錄控制
捕獲的請求太多,容易產生干擾,Charles可以對捕獲記錄進行過濾。
然後配置“exclude”:
web界面
Charles有個有趣的web界面:
強大的是可以控制是否遠程可以訪問這個界面,還可以設置用戶名和密碼…碉堡了…
瀏覽器輸入http://control.charles/ :
Charles還有其他有趣功能等待大家挖掘,由於用的比較少,這裏就不再累述。