Charles是目前最強大最流行的http抓包調試工具,Mac、Unix、Windows各個平臺都支持。特別是作APP開發,調試與服務端的通訊,Charles是必備工具。json
目前Charles是收費的,不過能夠破解。後端
Charles本質是就是一個http抓包分析工具,在工做的時候須要先把charles設置成代理服務器,這樣全部的網絡請求都會通過charles了。服務器
咱們在進行APP開發或測試時,常常須要知道APP的每一步操做調用的是哪一個接口,請求參數是什麼,返回值是什麼,做爲服務端,有時還須要對APP的某一個操做進行debug。經過簡單配置,咱們就能夠將咱們手機APP上全部請求發送到PC端Charles代理中,Charles會自動抓取http網絡包分析請求和返回值,固然這些只是Charles最基本的功能。markdown
下面就介紹如何配置Charles:網絡
Proxy->Proxy Setting
,設置http proxy代理端口:8888
(通常默認設置爲這個) 無線網絡->點擊當前鏈接的wifi->代理設置->設置服務器地址和端口
(各手機配置不太同樣),這裏的服務器地址就是PC端的IP地址,端口就是上面設置PC端的代理端口8888 通過上面設置,咱們手機上的全部請求都會發送到咱們PC端指定的端口,而這個端口就是Charles的代理端口。因此,客戶端的請求和服務端的響應都會通過Charles,咱們經過Charles就能夠很方便的看到請求和響應相關的數據啦。工具
Charles提供了兩種查看封包的視圖,分別是Structure
和Sequence
。post
1. Structure視圖將網絡請求按訪問的域名分類。 2. Sequence視圖將網絡請求按訪問的時間排序。
咱們能夠在使用時根據須要隨時切換。按照上面介紹配置好,下面就開始演示啦。測試
第一步,咱們打開咱們的APP,輸入用戶名密碼,點擊登陸
網站
第二步(初次使用可能要求咱們給予權限,點擊容許便可),再看咱們的Charles主界面,structure視圖中能夠看到此次操做的http請求響應信息,而且請求按域名進行了分組
debug
咱們能夠切換到sequence界面,全部的請求按照請求時間進行排列:
若是不設置過濾,手機上全部APP的網絡請求都會被解析,看起來很亂,一般狀況下,咱們只但願看到客戶端對應應用服務器的網絡請求,這時就須要對網絡請求進行過濾,只監控向指定目錄服務器上發送的請求。對於這種需求,咱們有2種辦法。
1. 在主界面的中部的Filter欄中填入須要過濾出來的關鍵字。例如咱們的服務器的地址是:`http://*.zitech.com`,那麼只須要在`Filter`欄中填入`zitech.com`便可。 2. 在Charles的菜單欄選擇`"Proxy"->"Recording Settings"`,而後選擇`Include`欄,選擇添加一個項目,而後填入須要監控的協議,主機地址,端口號。這樣就能夠只截取目標網站的封包了。以下圖所示:
1. 支持SSL代理。能夠截取分析SSL的請求。 2. 支持流量控制。能夠模擬慢速網絡以及等待時間(latency)較長的請求。 3. 支持AJAX調試。能夠自動將json或xml數據格式化,方便查看。 4. 支持AMF調試。能夠將Flash Remoting 或 Flex Remoting信息格式化,方便查看。 5. 支持重發網絡請求,方便後端調試。 6. 支持修改網絡請求參數。 7. 支持網絡請求的截獲並動態修改。 8. 檢查HTML,CSS和RSS內容是否符合W3C標準