抓包工具Charles使用教程


Charles是抓包工具中的神器,開發者可以使用它方便的抓取http請求,並支持修改、重放等功能。對於PC端和移動端都非常方便。

1. 安裝

首先從軟件官方http://www.charlesproxy.com/ 下載,安裝之前請確保已經安裝了JDK,之后按照提示安裝。注意:未注冊版本,每隔30分鍾會自動退出。

2. 配置與基本功能

對於Mac系統而言,打開charles之后,默認就已經對系統進行了代理,如果沒有,則需要在菜單欄的Proxy上勾選上Mac OS X Proxy。
1
以打開365日歷主頁為例:
  3333

charles對於抓取的包可以進行保存,等下次要分析時,在打開。
Filter可以對請求進行過濾,並且支持通配符,比如只想查看以包含365rili且以.do為結尾的請求,可以在Filter中設置365rili.*.do。
Overview可以更加詳細的查看這次請求的詳細內容,例如耗時詳細列車了請求開始時間、結束時間,響應開始時間、結束時間,總耗時、DNS耗時、網絡延時等。
對於Size也詳細列出了請求頭大小、響應頭大小、壓縮比例等內容。
  3
如果想查看更詳細的請求信息,比如Header、cookie、form表單等可以點擊Request,類似查看詳細的響應選擇Reponse。
除了對於PC端進行代理之外,還可以抓取客戶端,在Proxy->Proxy Settings中設置代理端口號:
  4
在手機端,WLAN設置中找到連接的wifi,設置代理:
  xxx
把代理模式設置為手動,設置主機名為Charles所在機器的ip,端口號為Charles配置的代理端口。這樣手機客戶端的所有http請求,都會被charles代理。可以方便的查看客戶端的http請求。

3. 高級功能

3.1 重放與編輯

點擊一個請求,雙值點擊觸摸板,可以對該請求進行復制、保存、重放和編輯操作。
6
Repeat Advanced高級重放功能可以作為簡單的性能測試:
  7
可以設置重放次數和並發數。
Edit:編輯修改功能,可以編輯修改任意請求信息,比如表單信息、cookie等,修改完畢后點Execute就可以發送一個修改后的請求數據包。
8

3.2 展示模式

除了以上圖片中的Sequence模式之外,Charles還有Strucure展現形式:
9
可以按照域名進行划分,相比來說Sequence是按照請求順序展示。
可以在View->Focussed Hosts中設置把關心的域名進行歸類,其他所有域名歸於Other Hosts:
10

3.3 包含和排除設置

可以通過Proxy->Recording Settings設置需要抓取哪些包、排除哪些包,比如我只想抓取when.coco.365rili.com域名下以.do為結尾的請求,以及 www.365rili.com/index.html請求,可以設置如下:
11
這樣就只會抓取能匹配這個規則的請求,同時可以在Exclude中設置需要排除的請求。
Include與主界面中的Filter的不同點是,不被包含的請求Charles不會抓取,而filter只是把不符合條件的不進行展示,Charles實際已經抓去了,把過濾條件去掉之后仍會顯示。

3.4 限流設置

有時候開發中需要測試用戶在網絡情況比較的差的時候應用的表現情況,可以使用Charles限流設置,Proxy->Thorttle Settings中設置如下:
12
可以設置寬帶、延遲等,並可以限制只對哪些hosts進行限流設置。

3.5 設置斷點

有時候對於一些特殊請求在發往服務器之前想要修改一些參數,或者在服務器響應完成之后修改響應信息,此時可以使用Charles的斷點功能:
13
當請求來的時候,Charles會停在斷點處:
14
點擊Edit Request可以對請求進行修改。對於Response類型的斷點也類似。

3.6 No Caching Settings

可以在Tools->No Caching Settings中設置不緩存。
15
這樣對於每個請求會在request中添加兩個Header:
Pragma:no-cache
Cache-Control:no-cache
但是否起作用需要服務器對這兩個Header支持才行。

3.7 DNS Spoofing Settings

一般的開發流程中,在上線之前都需要在測試環境中先行進行驗證,而此時手機客戶端請求的域名是不太容易改變的,可以通過設置dns方式把域名轉發到測試機上,具體設置Tools->DNS Spoofing Settings
比如要把所有包含365rili.com的域名轉到10.0.0.71的服務器上,可以設置如下:
222

3.8 Map Local Settings

對於前端開發來說,對html頁面,js或者css等進行調整后需要配置線上的接口來查看最終樣式,直接部署到生產環境可能會有風險,並且也不方便隨時修改,可以使用Map Local Settings的方式,把線上的靜態資源映射到本地:
17
這樣當請求靜態的html、js和css等資源的時候會使用本地的信息,方便及時看效果。

3.9 SSL

Charles不僅能夠抓取http協議的包,也能抓取https協議的包,但是由於https是經過加密的,因為抓取的包中的內容是以密文方式展現的,通過配置Charles的SSL可以方便的以明文查看https協議傳輸的內容。在Proxy->Proxy Settings->SSL中設置如下:
18
對於PC端瀏覽器需要添加Charles的證書到信任列表,而對於手機端也需要下載Charles的證書 charlesproxy.com/charles.crt,然后進行安裝。
除了以上功能之外,Charles還支持Reverse Proxy, Port Forwarding端口轉發,訪問控制,cookie清除,Map Remote,黑名單等功能,且 charles不僅支持Http代理,也支持SOCK代理。這樣就可以支持對所有協議的進行抓包。但是一般不長常用。

 

原文地址:http://tech.365rili.com/?p=57 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM