在 Mac 上經常使用的抓包軟件是 Charles,網上關於 Charles 的教程不少,這裏介紹另外一個抓包神器 mitmproxy。mitmproxy 是一款可交互式的命令行抓包工具,它除了能夠抓包查看 http/https 請求,還有一個很強大的功能是攔截並修改 request 或者 response,後面我會用實際例子演示如何修改知乎的回答:)javascript
mitmproxy 官網 介紹了用如下命令來安裝html
pip install mitmproxy複製代碼
我在實際安裝過程當中遇到了一些坑,首先是 OSX El Capitan 及以上的系統版本在安裝時會出現 six 模塊依賴錯誤,具體能夠看這兒的討論。還有一個問題是安裝過程當中會出現權限錯誤,須要以 root 權限執行。最後用如下命令成功安裝,安裝不了須要翻一下牆java
pip install mitmproxy --ignore-installed six複製代碼
首先須要配置一下網絡環境,將手機和電腦連在同一個 wifi 環境下,而後進入手機的 設置 - 無線局域網,點擊當前鏈接的 wifi 進入詳情設置頁面,在 http 代理那一欄輸入當前鏈接的 ip 地址,端口填8080,這個 ip 地址能夠在電腦上的 系統偏好 - 網絡 裏查看,配置完成以下圖,git
網絡環境配置完成後咱們能夠開始實際的抓包了,只需在電腦上打開終端(命令行操做窗口),而後輸入 mitmproxy -p 8080
,若是你看到以下頁面說明你已成功進入抓包模式,邁出了第一步,cheer~github
接下去你能夠用手機打開一些 App,不出意外你能看到一些 http 請求的列表。這時候咱們還沒法抓到 https 的包,還須要作一些額外配置。vim
下面的操做是針對 iPhone 手機,其餘設備也相似。用 iPhone 打開 Safari 瀏覽器並輸入 mitm.it,這時你會看到以下頁面,api
選擇對應平臺並安裝證書,安裝完成後就能夠抓 https 的包了,官網上解釋了這個工具是如何工做的瀏覽器
注意:用瀏覽器打開時須要已經在抓包模式,不然是沒法看到上述頁面的網絡
好了,到這裏咱們已經完成了全部的準備工做,接下去就和我一塊兒實際體驗一下 https 的抓包過程吧。工具
這裏以知乎爲例,用手機打開知乎,咱們應該能看到知乎的請求出如今列表裏了,相似下圖:
鍵盤上下移動,Enter 鍵進入查看詳情,按 Tab
鍵切換頂部導航欄,以下圖所示,
Tips:輸入
z
能夠清空列表,輸入f
再輸入~u xxx
能夠過濾出 url 爲 xxx 的請求,更多匹配規則輸入?
查看
上面演示的是常規的操做,下面介紹一下 mitmproxy 的另外一強大功能,攔截修改 request 和 response。
輸入 i
,而後輸入 ~s
再按回車鍵,這時候就進入了 response 攔截模式。若是輸入 ~q
則進入 request 的攔截模式,更多的命令能夠輸入 ?
查看。攔截模式下的頁面顯示以下圖所示,
其中橘紅色的表示請求正被攔截,這時 Enter 進入後 再按 e
就能夠修改 request 或者 response。修改時是用 vim 進行編輯的,修改完成後按 a
將請求放行,若是要放行全部請求輸入 A
便可。
下圖是我修改了某個答案的 response 請求將回答者的名字作了修改,由於只修改了 response 並不會影響其餘的用戶顯示:)
上面提到的那些指令在輸入 ?
後都能查看到,以下圖,另外官網上也有很詳細的說明
我用上述方式嘗試了大多數的 App,包括淘寶、微博,都能抓到 https 的包,有些有加密,有些沒有加密。可是簡書作了防中間人攻擊的設置,一啓用抓包模式就顯示網絡錯誤1012,仍是作的很不錯的,贊一個~
按照上面的過程就能夠 https 抓包了,若是有遇到問題能夠聯繫我,記得抓完後將手機 wifi 設置裏的 http 代理關閉。開始實際體驗一下吧,enjoy~
轉載請註明出處,有任何疑問均可聯繫我,歡迎探討。
最後作個推廣,歡迎關注公衆號 MrPeakTech,我從這裏學到不少,推薦給你們,共同進步~