# Proxyman 使用教學 ###### tags: `Published` > 2021/07/09 (Fri.) > -- Bob Chang @ KKStream CPT 有時候我們會需要檢查當 app 收到 status code `403` 之類的錯誤會怎麼處理。像這種時候使用 *Charles* 或 *Proxyman* 這類工具去做中間人攻擊真的很方便,又不用動 back-end、也不用改 front-end。快速、安全、又方便 ❤️ 1. 解釋什麼叫 "中間人攻擊" 2. 開始當中間人窺看 HTTP Request 3. 開始做中間人攻擊,竄改 Request & Response ## 解釋什麼叫 "中間人攻擊" "中間人攻擊"其實就是做資料竄改。關鍵字搜尋:Man-in-the-middle attack。 將原本只是 server ↔️ client 兩兩對傳的形式,中間多安插一位中間人,變成這樣 server ↔️ **man** ↔️ client。這樣一來 server 跟 clinet 之間的溝通都得要靠中間人傳話才能達成,於是中間人就可以。 舉個例子可以更容易理解。假如原本你跟喜歡的女生的位子坐在旁邊,你可以直接傳紙條給她。但現在換位子了,你要先傳給同學B,再請他幫你傳給喜歡的女生。於是乎同學B就可以把紙條上的內容做修修改改,這個同學B就是我們說的中間人。 ![](https://i.imgur.com/OceEhot.png) ## 開始當中間人窺看 HTTP Request [proxyman 官網](https://proxyman.io) 下載安裝 desktop app。 ### Desktop Local 打開 proxyman 之後你會發現你可以看到有 request 飛來飛去,但是 HTTP'S' 的你都看不到裡面寫什麼。於是我們需要先在電腦上安裝憑證,點選 Tool bar -> Certificate -> Install Certificate on this Mac...,並按照教學安裝即可。 ![](https://i.imgur.com/cT2ftyl.png) 在 Proxyman 的工具列底下找到這個功能後點擊打開憑證安裝教學。 ![](https://i.imgur.com/9tr3gQy.png) 將憑證安裝在 Mac 電腦上的教學說明。 ![](https://i.imgur.com/FDiKHFB.png) 在未開啟觀看 HTTPS 的時候,response 的內容都看不見。 ![](https://i.imgur.com/e8rlXFi.png) 在 Mac 安裝完憑證並開啟觀看 HTTPS 之後就可以看見內容了。 ### iOS physical device 要當 iOS app 與 server 之間的中間人,其概念也一樣。點選 Tool bar -> Certificate -> Install Certificate on iOS -> Physical Devices...,並按照教學安裝即可。 *記得將 Mac 與 iPhone 都連在同一個網域底下(連相同 wifi 即可) ![](https://i.imgur.com/K0Xwq0O.png) 在 Proxyman 的工具列底下找到這個功能後點擊打開憑證安裝教學。 ![](https://i.imgur.com/S9ACsc9.png) 將憑證安裝在 iPhone 上的教學說明。 ![](https://i.imgur.com/eS17nDm.png) Enable HTTPS response 之後就可以看見內容了。 ### Android physical device 略 ## 開始竄改 request 或 response 1. Breakpoint 2. Rewrite ### Breakpoint 例如今天要攔截並修改 https://mock-playback.tfc.kkv-test.com/v1/videos/1 這隻 API。 ![](https://i.imgur.com/VVWc8sS.png) 在 Proxyman 的工具列底下找到這個功能後點擊開始新增斷點。 ![](https://i.imgur.com/efAyyAF.png) 參照附圖步驟新增斷點。 ![](https://i.imgur.com/lhfRSBk.png) 參照附圖步驟竄改 request。 ![](https://i.imgur.com/OMD3iM5.png) 參照附圖步驟竄改 response,此例將標題改為「時代を越える想い」。 | before | after | |---|---| |![](https://i.imgur.com/GEt10Tt.jpg)|![](https://i.imgur.com/uas0QsG.jpg)| 於是可以看到 app 的影片標題變成我們改的「時代を越える想い」了。 ### Rewrite (Use `Script` in Proxyman) 相對 breakpoint,rewrite 會將欲定義好的規則套用下去執行,所以就不會再談出修改視窗了。在 proxyman 我們使用 `Script` 達到這個功能。 ![](https://i.imgur.com/C9wS8OF.png) 在 Proxyman 的工具列底下找到這個功能後點擊開始新增 rewrite 規則。 ![](https://i.imgur.com/Hn1VCFb.png) 參照附圖步驟竄改 response,此例將 response status code 改為 400。 ## 備註 - 手機在不使用中間人時,記得要把 proxy 設定關閉,否則連不上網際網路;電腦同理 - 注意使用公司VPN(Pulse Secure)時, 會讓 proxyman 失效, 此時得去修改監聽的IP 位置(中間人位置) - 當 request 短時間內很多的時候,可以善用視窗左下角的 filter - 視窗右上角有編輯視窗 隱藏/開啟 按鈕 - 視窗右上角有另開視窗功能,多螢幕時方便使用 - Proxyman 也有提供限制網速功能,在 Tools -> Network Conditions... - 免費版 Proxyman 即可完成以上所有事,付費版差在... - A year’s worth of macOS updates - Premium Proxyman for iOS (2 devices per seats) - Multiple Tabs - Unlimited Pinned Domains / Apps - Unlimited matching rules for all Advanced Debugging Tools (e.g. SSL Proxying List, Map Local, Map Remote, Breakpoint, Allow/Block List, Protobuf, Scripting, Network Conditions, Multiple Filters, etc). #### tip: 若電腦有使用 VPN 造成手機連不上網,記得再檢查一次中間人 IP 有沒有正確 ![](https://i.imgur.com/gHn4Qp1.png)