mitm工具--抓包(支持脚本)
8.12 mitm工具
8.12.1 简介
mitmproxy是一组工具,可为HTTP / 1,HTTP / 2和WebSockets提供交互式,支持SSL / TLS的拦截代理
mitmproxy项目的工具是一组暴露通用底层功能的前端。当我们谈论“ mitmproxy”时,我们通常指这三种工具中的任何一种-它们只是同一核心代理的不同前端。
- mitmproxy是具有SSL / TLS功能的交互式拦截侦听代理,具有用于HTTP / 1,HTTP / 2和WebSockets的控制台界面。
- mitmweb是用于mitmproxy的基于Web的界面。
- mitmdump是mitmproxy的命令行版本。将tcpdump用于HTTP。
我们使用这个工具,主要是使用mitmdump功能,为了解决问题: 在不同的终端上可以抓包,Charles只能在有页面的时候进行
8.12.2 学习网站
brew install mitmproxy
8.12.3 mitmweb配置
- 第一步,配置浏览器的代理
- 第二步:启动 mitmweb 启动时,记得带参数:要代理的端口号和服务IP
mitmweb --listen-host 127.0.0.1 --listen-port 8666
- 第三步:使用配置好的代理
- 第四步:访问http://mitm.it/ 下载证书
- 第五步:授信证书
8.12.4 mitmweb演示
- 启动mitmweb
默认打开浏览器http://127.0.0.1:8081/ ,默认监听端口8080
如需修改默认端口:mitmweb -p 9999
- 发送请求: curl https://baidu.com -x 127.0.0.1:8080 -k
8.12.5 mitmdump常见用法
参考官网:https://docs.mitmproxy.org/stable/concepts-filters/
8.12.5.1 录制回放
- mitmdump -w tmp 录制,并将内容写入文件tmp
- mitmdump -nr tmp 回放tmp文件中的请求 (n代表no server,不启动服务器)
8.12.5.2 过滤
- mitmdump -nr tmp -w tmp2 "~s baidu" 将tmp文件中的内容回放并将符合条件的请求写入tmp2文件,~s 响应中包含内容baidu
强大之处:: 可以使用脚本进行扩展
8.12.5.3 脚本
官网地址:https://docs.mitmproxy.org/stable/addons-scripting/
- 代码: mymitmproxy.py
from mitmproxy import http def request(flow: http.HTTPFlow) -> None: if "baidu.com" in flow.request.pretty_url : flow.response = http.HTTPResponse.make( 200, # (optional) status code b"Hello World", # (optional) content {"Content-Type": "text/html"} # (optional) headers )
- 运行:mitmdump -s mymitmproxy.py
- 访问baidu.com
8.12.6 实战
8.12.6.1 Charles抓取雪球的股票列表页,将第一条的数据进行更改(maplocal)
- 用Charles抓取模拟器上的包
- 将相应结果存储到文件text.json中,注意文件格式
- 使用Charles的map local 功能
- 刷新模拟器的APP页面,数据已经更新
8.12.6.2 mitmdump 实现maplocal
- 代码:mymitmproxy.py
from mitmproxy import http def request(flow: http.HTTPFlow) -> None: if "quote.json" in flow.request.pretty_url : with open('text.json',encoding='utf-8') as f: flow.response = http.HTTPResponse.make( 200, # (optional) status code f.read(), # (optional) content {"Content-Type": "application/json"} # (optional) headers )
- 运行mitmdump -s mymitmproxy.py
- 注意要更改模拟器的代理端口为mitmdump的默认端口8080
- 注意要将代理切换至mitmdump的配置中
8.12.6.2 有兴趣可以更改下返回数据