1. 程式人生 > >使用mitmproxy進行Android的http抓包

使用mitmproxy進行Android的http抓包

原文地址:http://hello1010.com/mitmproxy-android/

http抓包分析工具有比較多,如Fiddler,FireBug,HttpWatch,Tcpdump,PAW(mac)等。在做移動開發時,找到一款合適自己的能進行移動裝置http抓包的工具也是非常重要的。正所謂,工欲善其事必先利其器。

個人非常喜歡Fiddler,功能強大,而且還支援替換檔案,對於除錯線上的js/css檔案非常方便。可惜,沒有MAC版本。於是我只能另尋利器。

今天給大家介紹一款強大的支援手機端抓包的工具:mitmproxy。官網地址:http://mitmproxy.org/ 。這是mitmproxy官網的自述:

  an interactive, SSL-capable man-in-the-middle proxy for HTTP with a console interface

下載

下載地址:

喜歡折騰的可以自己編譯安裝。

電腦端設定

電腦和手機連線到同一個wifi環境下。執行時,需要指定電腦的ip地址,並約定一個埠號:

/Applications/ProgramFiles/mitmproxy-0.11.3/mitmproxy -b 10.0.1.6 -p 2386

手機端設定

手機和電腦連線同一個wifi,然後設定代理。進入WLAN,找到當前連線的wifi,長按,彈出的框中選擇“修改網路”,進入後,選擇“顯示高階選項”,代理選擇為“手動”,代理伺服器主機名設定為mac端的ip地址,埠號是跟剛剛設定的2386,設好後儲存。如下圖:


此時,手機端的所有http請求都會被mitmproxy檢測到,並顯示在控制檯中。鍵盤的上下鍵可以控制黃色箭頭 >> 的移動,回車直接進入請求詳情。


mitmproxy基本操作

其實命令基本和vi一致。

C 清空控制檯 
tab 請求/響應切換 
q 返回上一個介面 
m 在響應結果中,輸入m可以選擇body的呈現方式,比如json,xml等 
e 編輯請求、響應 
a 傳送編輯後的請求、響應

攔截HTTP請求

mitmproxy是一個支援SSL的HTTP中間人代理工具,它允許你檢查HTTP和HTTPS流量並支援直接改寫請求。它位於客戶端和Server端之間,它可以獲取客戶端的Request,然後修改再發送給Server端;Server端得到Request之後再發出相應的Response,又會被mitmproxy攔截,如果你想修改response,便可修改後再發給客戶端。


這個強大的功能曾經在一些有關iOS應用的隱私醜聞中都出現過,包括Path的地址簿上傳醜聞。它的直接改寫請求的能力也被用來針對iOS平臺,其應用包括在GameCenter中偽造一個虛假的高分數值。感興趣的可以閱讀:

http://mitmproxy.org/doc/tutorials/gamecenter.html

下面我要做的就是攔截android的http請求,然後修改請求url,等待伺服器返回後再修改響應體。

在預設情況下mitmproxy是過濾抓包的URL,例如我想攔截所有url中含有cmd=200的請求,操作如下:

在請求列表介面,輸入i(代表Intercept filter)進入命令列,輸入cmd=200


然後在android客戶端發起請求,我們可以看到被攔截的請求被標紅高亮了


使用鍵盤的上下箭頭移動黃色的>>,到被攔截的請求那一行,回車進入詳情,使用tab鍵切換Request和Response,現在請求還沒有發出去。輸入e,按提示可以編輯相應的請求體。編輯完畢後回車,然後輸入a(accept)傳送給伺服器。


伺服器響應後,會有Response,此時,響應還沒有發給android客戶端,可以看到是Response intercepted,代表是被攔截了。假如想編輯響應,一樣是輸入e編輯,進入編輯模式後,就是跟vi的操作一樣了,編輯完後需要wq儲存退出。然後再輸入a,這時android客戶端就會收到響應了。


其他攔截命令: ~q 攔截所有的請求

~c 404 攔截特定的響應碼404

~m POST 攔截所有POST請求

HTTPS抓包

3G/4G抓包

官方沒有給出解決方案,在網上找了一下,有人通過手機的移動熱點來實現,需要用到兩臺安卓手機,假如為A和B,電腦為C。現在要對A手機的HTTP進行抓包。

①在B中啟用WLAN熱點功能

②A和C連線到B

③在A中設定代理IP(A的IP地址,通常是192.168.43.xxx )