實戰(zhàn) | 手把手教你如何使用抓包神器 MitmProxy
大家好,我是安果!
今天教大家如何使用 MitmProxy 這款抓包工具
玩爬蟲的小伙伴都知道,抓包工具除了MitmProxy 外,還有 Fiddler、Charles以及瀏覽器 netwrok 等
既然都有這么多抓包工具了,為什么還要會用 MitmProxy 呢??今天教大家使用 MitmProxy 抓包工具的原因,主要有以下幾點:
不需要安裝軟件,直接在線(瀏覽器)進行抓包(包括手機端和 PC 端)
配合 Python 腳本抓包改包
抓包過程的所有數(shù)據(jù)包都可以自動保留到txt里面,方便過濾分析
使用相對簡單,易上手
1
配置 MitmProxy
MitmProxy可以說是客戶端,也可以說是一個 python 庫
方式一:客戶端
https://mitmproxy.org/downloads/在這個地址下可以下載對應(yīng)的客戶端安裝即可

方式二:Python庫
pip install mitmproxy通過這個 pip 命令可以下載好 MitmProxy,下面將會以 Python 庫的使用方式給大家講解如何使用(推薦方式二)
2
啟動 MitmProxy
MitmProxy 啟動有三個命令(三種模式)
mitmproxy,提供命令行界面
mitmdump,提供一個簡單的終端輸出(還可以配合Python抓包改包)
mitmweb,提供在線瀏覽器抓包界面
mitmdump啟動
mitmdump -w d://lyc.txt
這樣就啟動mitmdump,接著在本地設(shè)置代理Ip是本機IP,端口8080

安裝證書
訪問下面這個鏈接
http://mitm.it/
可以選擇自己的設(shè)備(window,或者Android、Apple設(shè)備去)安裝證書。
然后隨便打開一個網(wǎng)頁,比如百度

這里是因為證書問題,提示訪問百度提示https證書不安全,那么下面開始解決這個問題,因此就引出了下面的這種啟動方式
瀏覽器代理式啟動
哪一個瀏覽器都可以,下面以Chrome瀏覽器為例(其他瀏覽器操作一樣)
先找到chrome瀏覽器位置,我的chrome瀏覽器位置如下圖

通過下面命令啟動
"C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors--proxy-server是設(shè)置代理和端口
--ignore-certificate-errors是忽略證書
然后會彈出來Chrome瀏覽器,接著我們搜索知乎

在cmd中就可以看到數(shù)據(jù)包

這些文本數(shù)據(jù)可以在編程中進行相應(yīng)的操作,比如可以放到python中進行過來監(jiān)聽處理。
3
啟動 Mitmweb
新開一個cmd(終端)窗口,輸入下來命令啟動mitmweb
mitmweb
之后會在瀏覽器自動打開一個網(wǎng)頁(其實手動打開也可以,地址就是:http://127.0.0.1:8081)

現(xiàn)在頁面中什么也沒有,那下面我們在刷新一個知乎頁面
重點:關(guān)閉mitmproxy終端!關(guān)閉mitmproxy終端!關(guān)閉mitmproxy終端!
如果不改變在mitmweb中獲取不到數(shù)據(jù),數(shù)據(jù)只在mitmproxy中,因此需要關(guān)閉mitmproxy這個命令終端
刷新知乎頁面之后如下:

在剛剛的網(wǎng)頁版抓包頁面就可以看到數(shù)據(jù)包了

并且還包括https類型,比如查看其中一個數(shù)據(jù)包,找到數(shù)據(jù)是對應(yīng)的,說明抓包成功。

4
配合 Python 腳本
mitmproxy代理(抓包)工具最強大之處在于對python腳步的支持(可以在python代碼中直接處理數(shù)據(jù)包)
下面開始演示,先新建一個py文件(lyc.py)
from mitmproxy import ctx# 所有發(fā)出的請求數(shù)據(jù)包都會被這個方法所處理# 所謂的處理,我們這里只是打印一下一些項;當然可以修改這些項的值直接給這些項賦值即可def request(flow):# 獲取請求對象request = flow.request# 實例化輸出類info = ctx.log.info# 打印請求的urlinfo(request.url)# 打印請求方法info(request.method)# 打印host頭info(request.host)# 打印請求端口info(str(request.port))# 打印所有請求頭部info(str(request.headers))# 打印cookie頭info(str(request.cookies))# 所有服務(wù)器響應(yīng)的數(shù)據(jù)包都會被這個方法處理# 所謂的處理,我們這里只是打印一下一些項def response(flow):# 獲取響應(yīng)對象response = flow.response# 實例化輸出類info = ctx.log.info# 打印響應(yīng)碼info(str(response.status_code))# 打印所有頭部info(str(response.headers))# 打印cookie頭部info(str(response.cookies))# 打印響應(yīng)報文內(nèi)容info(str(response.text))
在終端中輸入一下命令啟動
mitmdump.exe -s lyc.py
(PS:這里需要通過另一個端啟動瀏覽器)
"C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors然后訪問某個網(wǎng)站

在終端中就可以看到信息


這些信息就是我們在 lyc.py 中指定的顯示信息
PS:在手機上配置好代理之后,mitmproxy 同樣可以抓取手機端數(shù)據(jù)
5
小結(jié)
不需要安裝軟件,直接在線(瀏覽器)進行抓包(包括手機端和 PC 端)
配合 Python 腳本抓包改包
抓包過程的所有數(shù)據(jù)包都可以自動保留到 txt 里面,方便過濾分析
使用相對簡單,易上手
