使用mitmproxy進(jìn)行移動(dòng)端的HTTP抓包


點(diǎn)擊訪問(wèn)原文
您還可以加入全棧技術(shù)交流群(QQ群號(hào):254842154)


HTTP抓包分析工具有比較多,如Fiddler,F(xiàn)ireBug良漱,HttpWatch愧口,Tcpdump睦番,PAW(mac)等。在做移動(dòng)開(kāi)發(fā)時(shí)耍属,找到一款合適自己的能進(jìn)行移動(dòng)設(shè)備HTTP抓包的工具也是非常重要的托嚣。正所謂,工欲善其事必先利其器厚骗。

個(gè)人非常喜歡Fiddler示启,功能強(qiáng)大,而且還支持替換文件领舰,對(duì)于調(diào)試線上的js/css文件非常方便夫嗓〕俾荩可惜,沒(méi)有MAC版本啤月。于是我只能另尋利器煮仇。

今天給大家介紹一款強(qiáng)大的支持手機(jī)端抓包的工具:mitmproxy。官網(wǎng)地址:http://mitmproxy.org/ 谎仲。這是mitmproxy官網(wǎng)的自述:

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

它是開(kāi)源的浙垫,托管在github上,使用python開(kāi)發(fā)郑诺,跨平臺(tái)夹姥。
https://github.com/mitmproxy/mitmproxy

下面以android為例做介紹,iOS的調(diào)試類(lèi)似辙诞,關(guān)鍵是設(shè)置好代理辙售。

下載

下載地址:

http://mitmproxy.org/download/osx-mitmproxy-0.11.3.tar.gz

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

電腦端設(shè)置

電腦和手機(jī)連接到同一個(gè)wifi環(huán)境下飞涂。運(yùn)行時(shí)旦部,需要指定電腦的ip地址,并約定一個(gè)端口號(hào):

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

手機(jī)端設(shè)置

手機(jī)和電腦連接同一個(gè)wifi较店,然后設(shè)置代理士八。進(jìn)入WLAN,找到當(dāng)前連接的wifi梁呈,長(zhǎng)按婚度,彈出的框中選擇“修改網(wǎng)絡(luò)”,進(jìn)入后官卡,選擇“顯示高級(jí)選項(xiàng)”蝗茁,代理選擇為“手動(dòng)”,代理服務(wù)器主機(jī)名設(shè)置為mac端的ip地址寻咒,端口號(hào)是跟剛剛設(shè)置的2386哮翘,設(shè)好后保存。如下圖:

Screenshot_2015-02-03-17-35-53.jpeg

此時(shí)毛秘,手機(jī)端的所有http請(qǐng)求都會(huì)被mitmproxy檢測(cè)到饭寺,并顯示在控制臺(tái)中。鍵盤(pán)的上下鍵可以控制黃色箭頭 >> 的移動(dòng)熔脂,回車(chē)直接進(jìn)入請(qǐng)求詳情佩研。

3.pic_hd.jpg

mitmproxy基本操作

詳細(xì)操作在這里可以找到:http://mitmproxy.org/doc/mitmproxy.html 。我在這里只列出一些經(jīng)常用到的命令霞揉。

其實(shí)命令基本和vi一致旬薯。

C 清空控制臺(tái)
tab 請(qǐng)求/響應(yīng)切換
q 返回上一個(gè)界面
m 在響應(yīng)結(jié)果中,輸入m可以選擇body的呈現(xiàn)方式适秩,比如json绊序,xml等
e 編輯請(qǐng)求硕舆、響應(yīng)
a 發(fā)送編輯后的請(qǐng)求、響應(yīng)

攔截HTTP請(qǐng)求

mitmproxy是一個(gè)支持SSL的HTTP中間人代理工具骤公,它允許你檢查HTTP和HTTPS流量并支持直接改寫(xiě)請(qǐng)求抚官。它位于客戶(hù)端和Server端之間,它可以獲取客戶(hù)端的Request阶捆,然后修改再發(fā)送給Server端凌节;Server端得到Request之后再發(fā)出相應(yīng)的Response,又會(huì)被mitmproxy攔截洒试,如果你想修改response倍奢,便可修改后再發(fā)給客戶(hù)端。

這個(gè)強(qiáng)大的功能曾經(jīng)在一些有關(guān)iOS應(yīng)用的隱私丑聞中都出現(xiàn)過(guò)垒棋,包括Path的地址簿上傳丑聞卒煞。它的直接改寫(xiě)請(qǐng)求的能力也被用來(lái)針對(duì)iOS平臺(tái),其應(yīng)用包括在GameCenter中偽造一個(gè)虛假的高分?jǐn)?shù)值叼架。感興趣的可以閱讀:

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

下面我要做的就是攔截android的http請(qǐng)求畔裕,然后修改請(qǐng)求url,等待服務(wù)器返回后再修改響應(yīng)體乖订。

在默認(rèn)情況下mitmproxy是過(guò)濾抓包的URL扮饶,例如我想攔截所有url中含有cmd=200的請(qǐng)求,操作如下:

在請(qǐng)求列表界面垢粮,輸入i(代表Intercept filter)進(jìn)入命令行贴届,輸入cmd=200

8.pic.jpg

然后在android客戶(hù)端發(fā)起請(qǐng)求靠粪,我們可以看到被攔截的請(qǐng)求被標(biāo)紅高亮了

5.pic.jpg

使用鍵盤(pán)的上下箭頭移動(dòng)黃色的>>蜡吧,到被攔截的請(qǐng)求那一行,回車(chē)進(jìn)入詳情占键,使用tab鍵切換Request和Response昔善,現(xiàn)在請(qǐng)求還沒(méi)有發(fā)出去。輸入e畔乙,按提示可以編輯相應(yīng)的請(qǐng)求體君仆。編輯完畢后回車(chē),然后輸入a(accept)發(fā)送給服務(wù)器牲距。

6.pic_hd.jpg

服務(wù)器響應(yīng)后返咱,會(huì)有Response,此時(shí)牍鞠,響應(yīng)還沒(méi)有發(fā)給android客戶(hù)端咖摹,可以看到是Response intercepted,代表是被攔截了难述。假如想編輯響應(yīng)萤晴,一樣是輸入e編輯吐句,進(jìn)入編輯模式后,就是跟vi的操作一樣了店读,編輯完后需要wq保存退出嗦枢。然后再輸入a,這時(shí)android客戶(hù)端就會(huì)收到響應(yīng)了屯断。


7.pic_hd.jpg

其他攔截命令:
~q 攔截所有的請(qǐng)求

~c 404 攔截特定的響應(yīng)碼404

~m POST 攔截所有POST請(qǐng)求

更多攔截命令看這里:
https://mitmproxy.org/doc/features/filters.html

更詳細(xì)的抓包過(guò)程也可以看這里:
http://greenrobot.me/devpost/how-to-debug-android-http-get-started/

HTTPS抓包

調(diào)試https請(qǐng)求稍微麻煩一點(diǎn)文虏,需要安裝自定義的SSL證書(shū)≈逞荩可以參考官網(wǎng)的這篇文章:
https://mitmproxy.org/doc/certinstall/android.html

3G/4G抓包

官方?jīng)]有給出解決方案择葡,在網(wǎng)上找了一下,有人通過(guò)手機(jī)的移動(dòng)熱點(diǎn)來(lái)實(shí)現(xiàn)剃氧,需要用到兩臺(tái)安卓手機(jī)敏储,假如為A和B,電腦為C∨蟀埃現(xiàn)在要對(duì)A手機(jī)的HTTP進(jìn)行抓包已添。
①在B中啟用WLAN熱點(diǎn)功能
②A和C連接到B
③在A中設(shè)置代理IP(A的IP地址,通常是192.168.43.xxx )

參考:
http://greenrobot.me/devpost/how-to-debug-http-and-https-traffic-on-android/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末滥酥,一起剝皮案震驚了整個(gè)濱河市更舞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坎吻,老刑警劉巖缆蝉,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瘦真,居然都是意外死亡刊头,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)诸尽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)原杂,“玉大人,你說(shuō)我怎么就攤上這事您机〈┮蓿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵际看,是天一觀的道長(zhǎng)咸产。 經(jīng)常有香客問(wèn)我,道長(zhǎng)仲闽,這世上最難降的妖魔是什么脑溢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蔼囊,結(jié)果婚禮上焚志,老公的妹妹穿的比我還像新娘衣迷。我一直安慰自己,他們只是感情好酱酬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布壶谒。 她就那樣靜靜地躺著,像睡著了一般膳沽。 火紅的嫁衣襯著肌膚如雪汗菜。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天挑社,我揣著相機(jī)與錄音陨界,去河邊找鬼。 笑死痛阻,一個(gè)胖子當(dāng)著我的面吹牛菌瘪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阱当,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼俏扩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了弊添?” 一聲冷哼從身側(cè)響起录淡,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎油坝,沒(méi)想到半個(gè)月后嫉戚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澈圈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年彬檀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片极舔。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凤覆,死狀恐怖链瓦,靈堂內(nèi)的尸體忽然破棺而出拆魏,到底是詐尸還是另有隱情,我是刑警寧澤慈俯,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布渤刃,位于F島的核電站,受9級(jí)特大地震影響贴膘,放射性物質(zhì)發(fā)生泄漏卖子。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一刑峡、第九天 我趴在偏房一處隱蔽的房頂上張望洋闽。 院中可真熱鬧玄柠,春花似錦、人聲如沸诫舅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)刊懈。三九已至这弧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虚汛,已是汗流浹背匾浪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卷哩,地道東北人蛋辈。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像将谊,于是被迫代替她去往敵國(guó)和親梯浪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,520評(píng)論 25 707
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理瓢娜,服務(wù)發(fā)現(xiàn)挂洛,斷路器,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • afinalAfinal是一個(gè)android的ioc眠砾,orm框架 https://github.com/yangf...
    passiontim閱讀 15,401評(píng)論 2 45
  • javaScript中屬性和方法用點(diǎn)"."語(yǔ)法來(lái)訪問(wèn)屬性和方法的的集合就是對(duì)象 下列代碼輸出結(jié)果是什么虏劲? 以下代碼...
    曾_0f37閱讀 273評(píng)論 0 0
  • 繾綣的落花閱讀 92評(píng)論 0 0