實戰 - 手把手教你如何使用抓包神器 MitmProxy
大家好,我是 Kuls,基於小紅書很難爬?最新爬取方法教給你啦~ 這篇文章,今天教大家如何使用 MitmProxy 抓包工具。
玩爬蟲的小夥伴都知道,抓包工具除了 MitmProxy 外,還有 Fiddler、Charles 以及瀏覽器 netwrok 等
既然都有這麼多抓包工具了,爲什麼還要會用 MitmProxy 呢??今天教大家使用 MitmProxy 抓包工具的原因,主要有以下幾點:
-
不需要安裝軟件,直接在線(瀏覽器)進行抓包(包括手機端和 PC 端)
-
配合 Python 腳本抓包改包(下面會有案例)
-
抓包過程的所有數據包都可以自動保留到 txt 裏面,方便過濾分析
-
使用相對簡單,易上手。
MitmProxy 可以說是客戶端,也可以說是一共 python 庫
方式一:客戶端
https://mitmproxy.org/downloads/
在這個地址下可以下載對應的客戶端安裝即可
方式二:Python 庫
pip install mitmproxy
通過這個 pip 命令可以下載好 MitmProxy,下面將會以 Python 庫的使用方式給大家講解如何使用(推薦方式二)
2
啓動 MitmProxy
MitmProxy 啓動有三個命令(三種模式)
-
mitmproxy,提供命令行界面
-
mitmdump,提供一個簡單的終端輸出(還可以配合 Python 抓包改包)
-
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 中指定的顯示信息。
5
小結
-
不需要安裝軟件,直接在線(瀏覽器)進行抓包(包括手機端和 PC 端)
-
配合 Python 腳本抓包改包。
-
抓包過程的所有數據包都可以自動保留到 txt 裏面,方便過濾分析
-
使用相對簡單,易上手。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/ZxyZU112KVcFdopOl5lVNw