App爬蟲神器mitmproxy和mitmdump的使用


mitmproxy是一個支持HTTP和HTTPS的抓包程序,有類似Fiddler、Charles的功能,只不過它是一個控制台的形式操作。

mitmproxy還有兩個關聯組件。

一個是mitmdump,它是mitmproxy的命令行接口,利用它可對接Python腳本,用Python實現監聽后的處理。

另一個是mitmweb,它是一個Web程序,通過它可清楚觀察mitmproxy捕獲的請求。

window操作系統不支持用mitmproxy命令,可用mitmdump或mitmweb代替。 $mitmdump --version    mitmweb -p 889 -s mitm.py   

由於mitmproxy默認不支持https,所以要安裝CA證書。

mitmproxy-ca.pem  PEM格式的證書私鑰
mitmproxy-ca.p12   雙擊windows安裝

mitmproxy-ca-cert.pem PEM格式證書,適用於大多數非Windows平台,android安裝
mitmproxy-ca-cert.p12 PKCS12格式的證書,適用於Windows平台
mitmproxy-ca-cert.cer 與mitmproxy-ca-cert.pem相同,只是改變后綴,適用於部分Android平台

mitmproxy-dhparam.pem PEM格式的秘鑰文件,用於增強SSL安全性


# C:\Users\.mitmproxy目錄下存放證書
  1. 安裝
  2. windows:   mitmweb  -p 9999 修改端口。 #linux指定代理端口 mimtproxy -p 9999     
  3. 將mitmproxy的證書push到安卓系統的證書目錄中; 

在shell中計算證書的散列值

openssl  x509  -subject_hash_old  -inform PEM  -in ~/.mitmproxy/mitmproxy-ca-cert.pem | head -1

將證書push到安卓系統的證書目錄中

adb push  ~/.mitmproxy/mitmproxy-ca-cert.pem    /system/etc/security/cacerts/c8750f0d.0

      3. 查看pc的局域網地址,通過adb設置代理的地址和端口號;

ERROR: Read-only file system
解決:adb remount 重新裝載Android文件系統,使文件系統可讀可寫

 
  • 設置代理  adb shell settings put global http_proxy ip:port       (ip為PC的局域網ip,端口為mitmproxy設置的代理端口)
  • 移除設置的代理  adb shell settings delete global http_proxy    【global_http_proxy_host 、 global_http_proxy_port】

 

 

mitmproxy有如下幾項功能。

  • 攔截HTTP和HTTPS請求和響應。

  • 保存HTTP會話並進行分析。

  • 模擬客戶端發起請求,模擬服務端返回響應。

  • 利用反向代理將流量轉發給指定的服務器。

  • 支持Mac和Linux上的透明代理。

  • 利用Python對HTTP請求和響應進行實時處理。

原理

手機和PC在同一個局域網內,設置代理為mitmproxy的代理地址。
“中間人”:手機在訪問互聯網時,流量數據包就會流經mitmproxy,mitmproxy再去轉發這些數據包到真實的服務器;
                  服務器返回數據包時再由mitmproxy轉發回手機,這樣mitmproxy抓取到所有Request和Response。
另外這個過程還可對接mitmdump,抓取到的Request和Response的具體內容都可直接用Python來處理,比如得到Response之后可直接進行解析,然后存入數據庫就完成了數據的解析和存儲過程。
 
 


免責聲明!

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



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