目录
一、mitmproxy库的介绍
mitm的全称是Man-in-the-middle attack(中间人攻击),它是一种"间接"的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就成为中间人,有一点类似我们之前使用的fiddler以及IP代理
mitmproxy是一个免费和开源的交互式HTTPS代理,基于中间人的方式用于调试,测试,抓包和渗透测试,它可以用于拦截,检查,修改和重构web通信,例如:HTTP/1,HTTP/2,Websocket或任何其他受SSL/TLS保护的协议可以解码从HTML到Protobuf的各种消息类型,即时拦截特定的消息,在它们到达目的地之前,对其进行修改,稍后将其重构到客户端或服务器
优势:mitmproxy-mitmdump可编写强大的插件和脚本,脚本APi提供对MitmProxy的完全控制,并可以自动修改消息,重定向流量,可视化消息或实现自定义命令,最重要的原因式可配合Python脚本对数据包进行拦截修改,使用简单,所以MitmProxy是爬虫工程师必须掌握的利器之一
详细介绍及使用可查阅官方文档:Introduction
二、mitmproxy库的安装配置
1.安装
客户端安装:https://mitmproxy.org/downloads/
点击进入网站,选择对应的版本进行安装
python库安装使用以下命令:
pip install mitmproxy
2.配置
安装完成后,打开终端(cmd)输入Mitmdump启动服务,默认端口是8080,如图表示安装成功
2.1.修改代理
修改Windows本地代理,选择"设置"中的"网络代理"中的"手动设置代理",打开"使用代理",并将IP地址修改为127.0.0.1,端口修改为默认8080端口或修改后的端口,点击保存
2.2.证书下载
在终端启动输入Mitmdump启动服,开启手动代理,启动成功后,下载Mitm证书:访问:http://mitm.it/ 下载
选择对应的版本,下载证书,如果打开网址出现下面的页面,说明手动代理没有启动,需要启动手动代理再进行访问下载
下载完成后,对证书进行安装:
双击下载的证书,进入安装页面,在存储位置中,两个选择都可以,然后点击下一页
继续点击下一页
此处密码不用输入,直接点击下一页
默认选择,点击下一步
最后完成安装
在此,安装配置就完成了,可以通过命令查看是否安装成功
mitmdump --version
三、mitmproxy的常规命令
要启动 mitmproxy 用 mitmproxy、mitmdump、mitmweb 这三个命令中的任意一个即可,这三个命令功能一致,且都可以加载自定义脚本,唯一的区别是交互界面的不同。linux操作系统下(windos不支持mitmproxy)
mitmproxy 命令启动后,会提供一个命令行界面,用户可以实时看到发生的请求,并通过命令过滤请求,查看请求数据。
使用mitmdump命令启动:
使用mitmweb命令启动:
输入命令后,会自动打开浏览器页面
四、mitmproxy中的addon
Mitmproxy的插件机制是Mitmproxy的一个非常强大的部分。事实上,mitmproxy自己的大部分功能都是在一套内置插件中定义的,实现了从防缓存和粘性cookie等功能到我们的在线应用程序的所有功能。
插件通过响应事件与mitmproxy交互,从而允许它们钩住并更改mitmprox的行为。它们通过选项进行配置,这些选项可以在mitmproxy的配置文件中设置,也可以由用户交互更改,或者通过命令行传递。最后,它们可以公开命令,允许用户直接调用它们的操作,或者将它们绑定到交互工具中的键。
示例:
from mitmproxy import ctx
class Counter:
def __init__(self):
self.num = 0
def request(self, flow):
self.num = self.num + 1
ctx.log.info("We've seen %d flows" % self.num)
addons = [Counter()]
上面是一个简单的插件,可以跟踪我们看到的流(或者更具体地说HTTP请求)的数量。每次它看到一个新的流时,它都会使用mitmproxy的内部日志机制来公布其计数。输出可以在交互式工具的事件日志中找到,也可以在mitmdump的控制台上找到。
使用命令将插件加载到您选择的mitmproxy工具中,确保它做了它应该做的事情。
将在这些示例中使用mitmdump,但所有工具的命令都是相同的:
mitmdump -s 插件文件名
在官网上还有很多插件的用法及介绍,这里就不一一介绍了,有需要的可以自行去官网阅读文档