實戰|手把手教你如何使用抓包神器MitmProxy


大家好,我是阿辰,今天教大家如何使用MitmProxy抓包工具。

玩爬蟲的小伙伴都知道,抓包工具除了MitmProxy外,還有Fiddler、Charles以及瀏覽器netwrok等

既然都有這么多抓包工具了,為什么還要會用MitmProxy呢??今天教大家使用MitmProxy抓包工具的原因,主要有以下幾點:

  1. 不需要安裝軟件,直接在線(瀏覽器)進行抓包(包括手機端和PC端)

  2. 配合Python腳本抓包改包(下面會有案例)

  3. 抓包過程的所有數據包都可以自動保留到txt里面,方便過濾分析

  4. 使用相對簡單,易上手。

1

配置MitmProxy

MitmProxy可以說是客戶端,也可以說是一共python庫

方式一:客戶端

https://mitmproxy.org/downloads/

在這個地址下可以下載對應的客戶端安裝即可

方式二:Python庫

pip install mitmproxy

通過這個pip命令可以下載好MitmProxy,下面將會以Python庫的使用方式給大家講解如何使用(推薦方式二)

2

啟動MitmProxy

MitmProxy啟動有三個命令(三種模式)

  1. mitmproxy,提供命令行界面

  2. mitmdump,提供一個簡單的終端輸出(還可以配合Python抓包改包)

  3. mitmweb,提供在線瀏覽器抓包界面

mitmdump啟動

mitmdump -w d://lyc.txt

這樣就啟動mitmdump,接着在本地設置代理Ip是本機IP,端口8080

安裝證書

訪問下面這個鏈接

http://mitm.it/

可以選擇自己的設備(window,或者Android、Apple設備去)安裝證書。

然后隨便打開一個網頁,比如百度

這里是因為證書問題,提示訪問百度提示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是設置代理和端口

--ignore-certificate-errors是忽略證書

然后會彈出來Chrome瀏覽器,接着我們搜索知乎

在cmd中就可以看到數據包

這些文本數據可以在編程中進行相應的操作,比如可以放到python中進行過來監聽處理。

3

啟動Mitmweb

新開一個cmd(終端)窗口,輸入下來命令啟動mitmweb

mitmweb

之后會在瀏覽器自動打開一個網頁(其實手動打開也可以,地址就是:http://127.0.0.1:8081)

現在頁面中什么也沒有,那下面我們在刷新一個知乎頁面

重點:關閉mitmproxy終端!關閉mitmproxy終端!關閉mitmproxy終端!

如果不改變在mitmweb中獲取不到數據,數據只在mitmproxy中,因此需要關閉mitmproxy這個命令終端

刷新知乎頁面之后如下:

在剛剛的網頁版抓包頁面就可以看到數據包了

並且還包括https類型,比如查看其中一個數據包,找到數據是對應的,說明抓包成功。

4

配合Python腳本

mitmproxy代理(抓包)工具最強大之處在於對python腳步的支持(可以在python代碼中直接處理數據包)

下面開始演示,先新建一個py文件(lyc.py)

from mitmproxy import ctx


# 所有發出的請求數據包都會被這個方法所處理
# 所謂的處理,我們這里只是打印一下一些項;當然可以修改這些項的值直接給這些項賦值即可
def request(flow):
    # 獲取請求對象
    request = flow.request
    # 實例化輸出類
    info = ctx.log.info
    # 打印請求的url
    info(request.url)
    # 打印請求方法
    info(request.method)
    # 打印host頭
    info(request.host)
    # 打印請求端口
    info(str(request.port))
    # 打印所有請求頭部
    info(str(request.headers))
    # 打印cookie頭
    info(str(request.cookies))
# 所有服務器響應的數據包都會被這個方法處理
# 所謂的處理,我們這里只是打印一下一些項
def response(flow):
    # 獲取響應對象
    response = flow.response
    # 實例化輸出類
    info = ctx.log.info
    # 打印響應碼
    info(str(response.status_code))
    # 打印所有頭部
    info(str(response.headers))
    # 打印cookie頭部
    info(str(response.cookies))
    # 打印響應報文內容
    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

然后訪問網頁(http://www.chenlove.cn),這里就以我自己的個人網站為例

在終端中就可以看到信息

這些信息就是我們在lyc.py中指定的顯示信息。

PS:

在手機上配置好代理之后,mitmproxy同樣可以抓取手機端數據,這里的具體操作和我之前這篇文章一樣【以某乎為實戰案例,教你用Python爬取手機App數據】,只不過是抓包工具不一樣而已。

5

小結

  1. 不需要安裝軟件,直接在線(瀏覽器)進行抓包(包括手機端和PC端)

  2. 配合Python腳本抓包改包。

  3. 抓包過程的所有數據包都可以自動保留到txt里面,方便過濾分析

  4. 使用相對簡單,易上手。

最后說一聲:原創不易,求給個贊、在看、評論

推薦閱讀

實操案例!手把手教你畫城市輪播地圖(文末送書)

實戰|教你爬取全國火鍋店數量,並利用地圖可視化展示

手把手教你爬取PC端『某酷視頻』個人歷史播放數據,並可視化展示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM