配置mitmproxy
mitmproxy 是一個(gè)抓包程序,另外還有mitmweb、mitmdump兩個(gè)關(guān)聯(lián)組件
windows下配置mitmproxy
pip install mitmproxymitmproxy是一個(gè)控制臺(tái)形式的抓包,不支持在cmd 上運(yùn)行;不過(guò)可以使用mitmdump或者mitmweb,后者是一個(gè)網(wǎng)頁(yè)形式-
配置證書(shū):設(shè)置瀏覽器的代理;chrome瀏覽器 為例:地址欄輸入 chrome://settings回車(chē),搜索代理點(diǎn)擊打開(kāi)代理設(shè)置,設(shè)置局域網(wǎng),高級(jí),127.0.0.1:8080; 注意檢測(cè)8080和8081端口是否被占用
# cmd netstat -ano | findstr 8080 tasklist | findstr pid taskkill /pid pid
- 終端執(zhí)行
mitmdump開(kāi)始監(jiān)聽(tīng)8080端口; 瀏覽器地址欄輸入 http:mitm:it 下載 HTTPS 證書(shū);選擇對(duì)應(yīng)的平臺(tái)點(diǎn)擊下載,雙擊證書(shū)添加到受信任根證書(shū)管理機(jī)構(gòu)中;這一步不做,所有的https請(qǐng)求的都會(huì)顯示SSL Error; 瀏覽器顯示“您的鏈接不是私密鏈接”

安裝證書(shū).png

未安裝證書(shū)訪問(wèn)網(wǎng)站出錯(cuò).png
模擬器/APP中安裝證書(shū)
將windows本地的mitmproxy-ca-cert.pem復(fù)制到模擬器上(MuMu模擬器找到模擬器上的更多里的文件共享,打開(kāi)文件共享將證書(shū)拖放到這里)
安全選選:從SD卡上安裝→共享文件→點(diǎn)擊mitmproxy-ca-cert.pem安裝
mitmweb使用
進(jìn)入虛擬環(huán)境(有安裝mitmproxy包):設(shè)置好代理之后(手機(jī)或者模擬器設(shè)置代理,在同一網(wǎng)段);執(zhí)行 mitmweb;瀏覽器自動(dòng)打開(kāi)頁(yè)面地址127.0.0.1:8081抓包
mitmdump使用: (需關(guān)閉mitmweb)
# 同樣進(jìn)入切換到安裝有mitmproxy包的虛擬環(huán)境,cd到項(xiàng)目目錄下,執(zhí)行:
mitmdump -q -s addons.py --set body-size-limit=10k "~m post"
# -q 屏蔽 mitmdump 默認(rèn)的控制臺(tái)日志,只顯示自己腳本中的
# -s 入口腳本文件
# --set body-size-limit=10k 只處理小于 10k 的請(qǐng)求
# "~m post" 只處理 post 方法的請(qǐng)求
m_script.py 示例腳本
def response(flow):
"""
獲取列表頁(yè)
@param flow:
@return:
"""
if 'https://list.tmall.com/search_product.htm?' in flow.request.url:
print(f'url: {flow.request.url}')
count = re.findall(r'&s=(\d+).*', flow.request.url)
try:
count = int(count[0])
page = int(count/30)
except Exception as e:
page = 0
print(f'page: {page}')
if page > 0:
html = flow.response.text
print(html)
# save_html(index=page, data=html)