參考轉(zhuǎn)載:https://testerhome.com/topics/15491
一,簡(jiǎn)介
Charles 是一個(gè) HTTP 代理/ HTTP 監(jiān)視器/反向代理,使開(kāi)發(fā)人員能夠查看其機(jī)器和 Internet 之間的所有 HTTP 和 SSL / HTTPS 流量。 這包括請(qǐng)求,響應(yīng)和 HTTP 標(biāo)頭(包含 cookie 和緩存信息)。
二,下載
下載地址:https://www.charlesproxy.com/download/
三,安裝
1,從網(wǎng)站下載完軟件資源包之后,將其解壓出來(lái),雙擊將它打開(kāi)運(yùn)行,按提示進(jìn)行安裝即可
四,設(shè)置代理+安裝證書(shū)
- 電腦:
(1)啟動(dòng) Charles 后,需要將 Charles 設(shè)置成系統(tǒng)代理,選擇菜單中的 “Proxy” –> “MacOS Proxy” 來(lái)將 Charles 設(shè)置成系統(tǒng)代理
(2)給電腦安裝CA證書(shū),進(jìn)入Charles的Help菜單中,點(diǎn)擊SSL Proxying-Install Charles Root Certificate,安裝好后信任此證書(shū)。之后通過(guò)瀏覽器請(qǐng)求的網(wǎng)址都會(huì)出現(xiàn)在這里。點(diǎn)擊某一個(gè)網(wǎng)址后會(huì)出現(xiàn)請(qǐng)求信息,點(diǎn)擊具體的請(qǐng)求后可看到Request和Response等信息。
(3)需要注意的是,Chrome 和 Firefox 瀏覽器默認(rèn)并不使用系統(tǒng)的代理服務(wù)器設(shè)置,所以在默認(rèn)情況下無(wú)法截取 Chrome 和 Firefox 瀏覽器的網(wǎng)絡(luò)通訊內(nèi)容。如果需要截取的話,在 Chrome 中設(shè)置成使用系統(tǒng)的代理服務(wù)器設(shè)置即可,或者直接將代理服務(wù)器設(shè)置成 127.0.0.1:8888 也可達(dá)到相同效果。
- 手機(jī):
(1)首先需要將 Charles 的代理功能打開(kāi)。在 Charles 的菜單欄上選擇 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying”
(2)在要抓包的手機(jī)上點(diǎn)設(shè)置-網(wǎng)絡(luò)-配置代理,代理ip填寫(xiě)電腦當(dāng)前使用ip,端口號(hào):8888, 然后在手機(jī)瀏覽器里輸入http://charlesproxy.com/getssl,下載安裝charles證書(shū)。
(3)如果是蘋(píng)果手機(jī),需要在設(shè)置-通用-信息證書(shū),找到此證書(shū)點(diǎn)擊信任,設(shè)置完成后即可對(duì)手機(jī)抓包。
六,基本使用
1,過(guò)濾請(qǐng)求
2,使用本地?cái)?shù)據(jù) (Map Local)
這個(gè)功能主要是攔截服務(wù)端數(shù)據(jù),做本地修改.
注意:不需要 Map Local 的時(shí)候,在 Tools-Map Local 中把這個(gè)接口關(guān)閉.
(1) 復(fù)制響應(yīng)結(jié)果中 json 到存儲(chǔ)到本地文件中
(2) 在本地文件中修改內(nèi)容
(3) 點(diǎn)擊接口,右鍵選擇 Map Local
(4) Map To 選擇剛才修改過(guò)的 json 文件
2,接口重定向 (Map Rmote)
這個(gè)功能主要是把接口代理到其他環(huán)境上
- 在 Map Rmote 中寫(xiě)上要代理接口
3,重寫(xiě) (Rewrite)
重寫(xiě)功能可以刪除、修改、增加,head、body、url、response 等參數(shù)
(1) 位置在 Tools->Rewrite 下,需要增加一個(gè)接口地址,增加一個(gè)重寫(xiě)規(guī)則
(2) 接著上實(shí)例,把 bid=3152 替換成 1937,此時(shí)完成了一次 body 數(shù)據(jù)重寫(xiě)
4,斷點(diǎn)
斷點(diǎn)功能主要修改 request 和 response 內(nèi)容,這個(gè)時(shí)候接口是在 Charles 代理層被攔截,還沒(méi)有實(shí)際到手機(jī)設(shè)備上.
(1) 選擇接口 - 勾選 BreakPoints-再次請(qǐng)求接口
(2) 修改 request 中 body 參數(shù) - 點(diǎn)擊 Execute-發(fā)送請(qǐng)求
(3) 修改 response 中 status code 參數(shù) - 點(diǎn)擊 Execute
Ps: 這個(gè)功能比較適合模擬接口 500、超時(shí),客戶端接收 response 是有超時(shí)時(shí)間的,如果修改數(shù)據(jù)的時(shí)間太久,客戶端會(huì)展示錯(cuò)誤頁(yè)面,那么做斷點(diǎn)調(diào)試就沒(méi)有意義了.
5,模擬發(fā)送請(qǐng)求
(1) 選擇接口右鍵選擇 Compose
(2) 修改數(shù)據(jù),點(diǎn)擊 Execute 按鈕發(fā)送請(qǐng)求
6,重發(fā)請(qǐng)求 (Repeat)
(1) 接口右鍵選擇-Repeat,表示重新發(fā)送一次請(qǐng)求
(2) 接口右鍵選擇-Repeat Advanced,填寫(xiě)發(fā)送的次數(shù),循環(huán)發(fā)送多次請(qǐng)求
* Iterations 表示次數(shù)
* Concurrency 表示并發(fā)線程數(shù)
7,模式弱網(wǎng)
(1) Proxy-Throttle Settings
(2) 勾選 Enable Throttling
(3) Only for selected 表示僅選擇的域名做弱網(wǎng)
(4) Throttle preset 表示要模擬的網(wǎng)速,可以改上行和下行帶寬,還有丟包率











