Mitmproxy 的安裝與使用案例

Mitmproxy 的安裝與使用案例

前言:

上篇文章簡(jiǎn)單介紹了手機(jī)端的抓包工具fiddler的使用,實(shí)現(xiàn)了抓取抖音某用戶“喜歡”的視頻列表的操作。

為了在代碼層面實(shí)現(xiàn)手機(jī)端的抓包,介紹另一款非常便捷的代理工具M(jìn)itmproxy的安裝與使用。本文記于20年10月。

基礎(chǔ)知識(shí):

1) 什么是網(wǎng)絡(luò)代理

通過(guò) 代理服務(wù) 訪問(wèn)目標(biāo)網(wǎng)頁(yè)。類似與淘寶快遞的場(chǎng)景,買家和賣家不會(huì)有直接的接觸,在一場(chǎng)購(gòu)物過(guò)程中,賣家不需要關(guān)心你是誰(shuí)、你住在哪,只需要貼條發(fā)快遞即可。實(shí)際購(gòu)買的五品是通過(guò)快遞小哥觸達(dá)買家的。在這個(gè)過(guò)程中,快遞小哥充當(dāng)?shù)木褪谴矸?wù) 的角色。

圖1 常見網(wǎng)絡(luò)代理的形式

代理服務(wù)器(Proxy Server)作為網(wǎng)絡(luò)信息的中轉(zhuǎn)站,其功能是代理網(wǎng)絡(luò)用戶去取得網(wǎng)絡(luò)信息。

2)什么是Mitmproxy

Mitmproxy就是一個(gè)常見的網(wǎng)絡(luò)代理服務(wù),與fiddler、charles類似。

“顧名思義,mitmproxy 就是用于 MITM 的 proxy,MITM(Man-in-the-MiddleAttack) 即”中間人攻擊”,用于中間人攻擊的代理首先會(huì)向正常的代理一樣轉(zhuǎn)發(fā)請(qǐng)求,保障服務(wù)端與客戶端的通信,其次,會(huì)適時(shí)的查、記錄其截獲的數(shù)據(jù),或篡改數(shù)據(jù),引發(fā)服務(wù)端或客戶端特定的行為。

不同于 fiddler 或 wireshark 等抓包工具,mitmproxy 不僅可以截獲請(qǐng)求幫助開發(fā)者查看、分析,更可以通過(guò)自定義腳本進(jìn)行二次開發(fā)?!边@也是Mitmproxy的突出應(yīng)用場(chǎng)景,除了可以實(shí)現(xiàn)類似fiddler的過(guò)濾瀏覽器對(duì)某個(gè)特定 url 的請(qǐng)求、查看 分析數(shù)據(jù),還可以實(shí)現(xiàn)高度的定制化需求,這樣的需求可以通過(guò)載入自定義代碼腳本輕松實(shí)現(xiàn),支持python/java等語(yǔ)言,簡(jiǎn)單易用。

3)Mitmproxy的基本功能有哪些

Mitmproxy是一個(gè)開源項(xiàng)目,github托管地址為https://github.com/mitmproxy/mitmproxy

其項(xiàng)目中包含4個(gè)最重要的組件,分別為:

a. mitmproxy 是具有SSL / TLS功能的交互式攔截偵聽代理,具有用于HTTP / 1,HTTP / 2和WebSockets的控制臺(tái)界面。

b. mitmdump是mitmproxy的命令行版本。將tcpdump用于HTTP。

c. mitmweb 是用于mitmproxy的基于Web的界面。

d. pathoc并且pathod是錯(cuò)誤的HTTP客戶端和服務(wù)器應(yīng)用程序,旨在讓您制作幾乎所有可能的HTTP請(qǐng)求,包括創(chuàng)造性地違反標(biāo)準(zhǔn)的請(qǐng)求。

簡(jiǎn)單的介紹就到這里,下面分4個(gè)步驟,以windows端為例,講解下Mitmproxy的安裝和使用。

STEP1:下載和安裝Mitmproxy

Windows端Mitmproxy下載地址:https://github.com/mitmproxy/mitmproxy/releases


windows端下載

安裝過(guò)程很簡(jiǎn)單,不贅述,一直下一步即可。

安裝界面

安裝完成后,會(huì)自動(dòng)彈出一個(gè)命令行窗口和一個(gè)web網(wǎng)頁(yè)。

命令行窗口中,標(biāo)明proxy server默認(rèn)運(yùn)行在8080端口上,web界面默認(rèn)運(yùn)行在8081端口上;

Web界面默認(rèn)地址是127.0.0.1:8081,界面用于展示抓包詳情。

成功運(yùn)行界面

成功出現(xiàn)如上界面,說(shuō)明PC端的配置正常。

STEP2:手機(jī)端的配置

與fiddler等其他工具使用過(guò)程中的手機(jī)端配置類似,需要:

1)手機(jī)和PC接入同一WIFI

2)查看PC端的ip地址,如本機(jī)為192.168.0.121

windows端查看ip

3)在手機(jī)端wifi的高級(jí)設(shè)置中,配置手動(dòng)代理,添加主機(jī)名為PC端ip,端口為Mitmproxy設(shè)置的端口號(hào)(默認(rèn)為8080)

手機(jī)端wifi配置代理

之后手機(jī)瀏覽器訪問(wèn) mitm.it,下載對(duì)應(yīng)終端的證書并安裝即可。

以上便完成了 Mitmproxy 在 手機(jī)端的配置。

STEP3:Mitmproxy界面初識(shí)

Flows界面:

flows界面

1/2. 每條flow請(qǐng)求的內(nèi)容,GET請(qǐng)求, URL, 狀態(tài)碼, 響應(yīng)類型, 大??;

3. 刷新圖標(biāo)代表重新request;

4. 橙色代表request正在被攔截, enter進(jìn)入,按e可進(jìn)行編輯;

5. 向左的箭頭代表返回的response被攔截,可被編輯;

6. 請(qǐng)求log, EventLog模式下,按e進(jìn)行日志欄打開/關(guān)閉;

7. flow請(qǐng)求的綜述;

8. 當(dāng)前的狀態(tài),包括正在攔截什么樣的請(qǐng)求,是否在運(yùn)行特定腳本;

9. 顯示當(dāng)前綁定的地址、端口號(hào)等;

Web界面:

web端界面

以安卓手機(jī)模擬器為例展示,web界面中是抓到的請(qǐng)求,點(diǎn)擊可如下圖展開查看詳情?;竟δ芘c其他工具如fiddler類似。

抓包詳情

STEP4:如何結(jié)合python代碼實(shí)現(xiàn)簡(jiǎn)單的抓包

上文有提到,“這也是Mitmproxy的突出應(yīng)用場(chǎng)景,除了可以實(shí)現(xiàn)類似fiddler的過(guò)濾瀏覽器對(duì)某個(gè)特定 url 的請(qǐng)求、查看 分析數(shù)據(jù),還可以實(shí)現(xiàn)高度的定制化需求”,能夠輕松結(jié)合代碼實(shí)現(xiàn)定制化需求是Mitmproxy的突出特點(diǎn),下面就放一個(gè)“python打印某用戶抖音“喜歡”列表中視頻元素”的實(shí)現(xiàn)邏輯和簡(jiǎn)單代碼片段:

1)首先要抓到刷某用戶“喜歡”列表的請(qǐng)求:

分析請(qǐng)求過(guò)程,發(fā)現(xiàn)在某條favorite的請(qǐng)求中,有aweme_list值,是我們想要獲取的請(qǐng)求,分析下來(lái),請(qǐng)求返回的json串中包含了相關(guān)視頻的豐富信息,其中'desc'為視頻的描述信息,'aweme_id'為視頻的id信息,'share_url'為視頻的分享連接。

2)根據(jù)抓取到的目標(biāo)請(qǐng)求和響應(yīng),編寫代碼。下面是一個(gè)簡(jiǎn)單的代碼塊,抓取請(qǐng)求并解析打印響應(yīng)字段:

import json

def response(flow):

???print(">>>>>>>>>>>>>>Start<<<<<<<<<<<<<<<<")

???if "aweme/v1/aweme/favorite" in flow.request.url:

???????for video in json.loads(flow.response.text)['aweme_list']:

???????????video_info = {}

???????????video_info['describtion'] = video['desc']

???????????video_info['aweme_id info'] = video['aweme_id']

???????????video_info['share_url info'] = video['share_url']

???????????print(video_info)


在cmd命令行模式下,使用命令mitmdump -s Praser.py -p 8080跑起來(lái),就會(huì)在命令行中持續(xù)打印信息。如下圖,可以看到已經(jīng)成功抓取到了想要的信息。

總結(jié):

什么是Mitmproxy:

Mitmproxy是開源的網(wǎng)絡(luò)代理服務(wù),可以結(jié)合代碼輕松實(shí)現(xiàn)手機(jī)端的抓包需求。

安裝和簡(jiǎn)單的使用步驟:

STEP1:下載和安裝Mitmproxy

STEP2:手機(jī)端的配置

STEP3:Mitmproxy界面初識(shí)

STEP4:結(jié)合python代碼實(shí)現(xiàn)簡(jiǎn)單的抓包

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容