作者:虛壞叔叔
早餐店不會開到晚上,想吃的人早就來了!😄
mitmproxy抓包軟體詳解
講解
mumdump
,它的優勢是可以和Python腳本互動,我們來示範一下如何進行互動。
一、安裝mitmproxy
pip install mitmproxy -i https://pypi.douban.com/simple
pip install mitmproxy==5.0.1
二、mitmdump加載端口和python腳本
cmd啟動
mitmdump
mitmdump
如上提示的話就說明
mitmdump
會監聽
8080
端口,由于我們要監聽
fiddler
的
8889
端口,就需要修改如下:
mitmdump -p 8889
如何能讓
mitmdump
和
Python
進行互動呢?
可以加一個-s參數,去指定互動的
Python
檔案,比如
test.py
,:
mitmdump -p 8889 -s test.py
這個
test.py
,需要自己編寫,它有固定的格式。
在
pycharm
中建立
test.py
:
# 必須這麼寫 才能抓到資料包
def request(flow):
print(flow.request.headers)
此時,終端運作:
可以看到,加載了test.py這個腳本。
三、啟動安卓模拟器用于抓包
一定要確定上節課設定為
手動
代理,并且代理端口為
8889
:
打開浏覽器,通路:
httpbin.org/get
此時,可以看到這裡有一個
headers
,這裡列印出來的就是我們想要擷取的請求頭
print(flow.request.headers)
四、通過日志的形式輸出
這種方式可以更加明确的區分顔色
from mitmproxy import ctx
# 必須這麼寫 才能抓到資料包
def request(flow):
#print(flow.request.headers)
ctx.log.info(str(flow.request.headers))
ctx.log.warn(str(flow.request.headers))
ctx.log.error(str(flow.request.headers))
指令行視窗将上一個捕獲結束掉,然後通過
mitmdump - p 8889 - s test.py
捕獲,接着在模拟器上用浏覽器再次通路網址
可以看到輸出了3段
也可以擷取到請求的
url
:
from mitmproxy import ctx
# 必須這麼寫 才能抓到資料包
def request(flow):
#print(flow.request.headers)
ctx.log.error(str(flow.request.url))#url
ctx.log.error(str(flow.request.host))#主機名
ctx.log.error(str(flow.request.method))#請求方法
ctx.log.error(str(flow.request.path))#請求路徑
可以看到輸出了url
既然會有請求函數,那麼也就有響應函數:
from mitmproxy import ctx
# 必須這麼寫 才能抓到資料包
def request(flow):
#print(flow.request.headers)
ctx.log.error(str(flow.request.url))
def response(flow):
ctx.log.error(str(flow.response.status_code))
指令行視窗将上一個捕獲結束掉,然後通過
mitmdump - p 8889 - s test.py
捕獲,接着在模拟器上用浏覽器再次通路網址
可以看到列印了狀态
200
from mitmproxy import ctx
# 必須這麼寫 才能抓到資料包
def request(flow):
#print(flow.request.headers)
ctx.log.error(str(flow.request.url))
def response(flow):
ctx.log.error(str(flow.response.status_code))
ctx.log.error(str(flow.response.text))
五、總結
- 本文介紹了Uiautomator2自動化抓取工具。