# 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就是我們說的中間人。

## 開始當中間人窺看 HTTP Request
[proxyman 官網](https://proxyman.io) 下載安裝 desktop app。
### Desktop Local
打開 proxyman 之後你會發現你可以看到有 request 飛來飛去,但是 HTTP'S' 的你都看不到裡面寫什麼。於是我們需要先在電腦上安裝憑證,點選 Tool bar -> Certificate -> Install Certificate on this Mac...,並按照教學安裝即可。

在 Proxyman 的工具列底下找到這個功能後點擊打開憑證安裝教學。

將憑證安裝在 Mac 電腦上的教學說明。

在未開啟觀看 HTTPS 的時候,response 的內容都看不見。

在 Mac 安裝完憑證並開啟觀看 HTTPS 之後就可以看見內容了。
### iOS physical device
要當 iOS app 與 server 之間的中間人,其概念也一樣。點選 Tool bar -> Certificate -> Install Certificate on iOS -> Physical Devices...,並按照教學安裝即可。
*記得將 Mac 與 iPhone 都連在同一個網域底下(連相同 wifi 即可)

在 Proxyman 的工具列底下找到這個功能後點擊打開憑證安裝教學。

將憑證安裝在 iPhone 上的教學說明。

Enable HTTPS response 之後就可以看見內容了。
### Android physical device
略
## 開始竄改 request 或 response
1. Breakpoint
2. Rewrite
### Breakpoint
例如今天要攔截並修改 https://mock-playback.tfc.kkv-test.com/v1/videos/1 這隻 API。

在 Proxyman 的工具列底下找到這個功能後點擊開始新增斷點。

參照附圖步驟新增斷點。

參照附圖步驟竄改 request。

參照附圖步驟竄改 response,此例將標題改為「時代を越える想い」。
| before | after |
|---|---|
|||
於是可以看到 app 的影片標題變成我們改的「時代を越える想い」了。
### Rewrite (Use `Script` in Proxyman)
相對 breakpoint,rewrite 會將欲定義好的規則套用下去執行,所以就不會再談出修改視窗了。在 proxyman 我們使用 `Script` 達到這個功能。

在 Proxyman 的工具列底下找到這個功能後點擊開始新增 rewrite 規則。

參照附圖步驟竄改 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 有沒有正確
