- 一、前言
- 二、安装mitmproxy工具
- 三、mitmdump
- 四、mitmweb
- 五、编写脚本
除了我们的抓包软件fiddler和Charles,我们今天再介绍一款抓包工具mitmproxy。
不同于 fiddler 或 wireshark 等抓包工具,mitmproxy 不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发。举例来说,利用 fiddler 可以过滤出浏览器对某个特定 url 的请求,并查看、分析其数据,但实现不了高度定制化的需求,类似于:“截获对浏览器对该 url 的请求,将返回内容置空,并将真实的返回内容存到某个数据库,出现异常时发出邮件通知”。而对于 mitmproxy,这样的需求可以通过载入自定义 python 脚本轻松实现。
二、安装mitmproxy工具pip install mitmproxy
查看是否安装成功
mitmdump --version
mitmproxy 提供了三个命令,启动模式不同:
- mitmproxy 提供一个命令行界面(该命令不支持windows)
- mitmdump 提供一个简单的终端输出。
- mitmweb 提供一个浏览器界面。
mitmdump是mitmproxy所提供的命令之一。它提供类似于tcpdump的功能,让您可以查看、记录和以编程方式转换HTTP流量。
1.启动监听
>>mitmdump -w d://log.txt
Proxy server listening at http://*:8080
2.启动浏览器 这里以360极速浏览器为例,因为可以方便修改代理 然后进入百度,会发现刚才的d盘目录生成了log.txt
我们在命令行直接输入mitmweb,会发现我们进入一个web页面,是可视化的抓包页面
360极速浏览器链接80代理后,我们访问百度,会抓到如下的包
mitmproxy最厉害的功能当然是对截获的数据 ,通过脚本进行一些特定事情的修改!
编写一个 demo.py 文件供 mitmproxy 加载,文件定义了变量 addons,addons 是个数组,每个元素是一个类实例,这些类有若干方法,这些方法实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的方法。这些类,称为一个个 addon,比如一个叫 Counter 的 addon:
# coding: utf-8
# Author:Qinfan
# Time : 2022/2/11 14:59
import mitmproxy.http
from mitmproxy import ctx
class Counter:
def __init__(self):
self.num = 0
def request(self, flow: mitmproxy.http.HTTPFlow):
self.num = self.num + 1
ctx.log.info("第%d个flows" % self.num)
addons = [
Counter()
]
命令行运行
mitmweb -s demo.py
访问百度 其他篡改可以参考:
https://www.cnblogs.com/grandlulu/p/9525417.html