mitmproxy拦截php文件,mitmproxy的中间拦截事件(七)

mitmproxy是一个开源的网络代理工具,用于拦截、查看和修改HTTP/HTTPS流量。它通过建立SSL双向代理来实现中间人攻击。在通信过程中,mitmproxy拦截并处理各种事件,如clientconnect、requestheaders、response等,允许开发者通过自定义脚本来注入功能。这一工具在网络安全、API调试和自动化测试等领域有着广泛应用。

mitmproxy的基本原理

1.客户端发起一个到mitmproxy的连接,并且提交了HTTP CONNECT请求。

2.mitmproxy以200连接已经建立响应,好像已经建立了CONNECT通信管道。

3.客户端确信它正在和远端服务器会话,然后启动SSL连接。SSL连接使用服务器名字指示(SNI)指明它正在连接的主机名。

4.mitmproxy连接服务器,然后使用客户端指明的服务器名字指示的主机名建立SSL连接。

5.服务器以匹配的SSL证书响应,这个SSL证书里包含生成的拦截证书所必须的通用名(CN)和服务器备用名(SAN)。

6.mitmproxy生成拦截证书,然后继续进行在第3步暂停的客户端SSL握手。

7.客户端通过已经建立的SSL连接发送请求。

8.mitmproxy通过第4步建立的SSL连接传递这个请求给服务器。

mitmproxy开放了以下event供我们拦截使用

def clientconnect(self, root_layer):

pass

def clientdisconnect(self, root_layer):

pass

def serverconnect(self, server_conn):

pass

def serverdisconnect(self, server_conn):

pass

def next_layer(self, top_layer):

pass

def http_connect(self, f):

pass

def error(self, f):

pass

def requestheaders(self, f):

pass

def request(self, f):

pass

def responseheaders(self, f):

pass

def response(self, f):

pass

def websocket_handshake(self, f):

pass

def websocket_start(self, flow):

pass

def websocket_message(self, flow):

pass

def websocket_error(self, flow):

pass

def websocket_end(self, flow):

pass

def tcp_start(self, flow):

pass

def tcp_message(self, flow):

pass

def tcp_error(self, flow):

pass

def tcp_end(self, flow):

pass

比较常用的是response,通过inline script方式重写这些方法,添加需要拦截的功能等,然后mitmproxy启动时候通过-s添加进去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值