mitmproxy

 


##################################

mitmproxy
参考文档:
https://www.cnblogs.com/grandlulu/p/9525417.html
简介:
pip3 install mitmproxy
mitmdump --version
mitmproxy、mitmdump、mitmweb
mitmdump -s addons.py

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors
"G:\Program Files\Mozilla Firefox\firefox.exe" --proxy-server=127.0.0.1:8081 --ignore-certificate-errors

事件:***http生命周期
addons文件

---------------------------------------

mitmproxy功能:
正向代理,截获请求
安装:
pip3 install mitmproxy
# 查看是否安装成功
mitmdump --version
运行:
# mitmproxy 命令不支持在 windows 系统中运行
mitmproxy、mitmdump、mitmweb
mitmproxy 提供一个实时命令行界面
mitmweb 命令启动后,会提供一个 web 界面
mitmdump 命令启动后,没有界面,程序默默运行,结合自定义脚本(实际生产中基本使用这个)

mitmweb 启动 mitmproxy
mitmproxy 绑定了 *:8080 作为代理端口,并提供了一个 web 交互界面在 127.0.0.1:8081。
使用 Edge 或其他浏览器打开 127.0.0.1:8081
关闭所有 Chrome 窗口
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors
"G:\Program Files\Mozilla Firefox\firefox.exe" --proxy-server=127.0.0.1:8081 --ignore-certificate-errors
用 Chrome 打开一个网站(模拟client行为)
Edge上查看(查看proxy拦截的请求)

脚本:
编写一个 py 文件供 mitmproxy 加载
1.文件中定义了若干函数,这些函数实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的函数
import mitmproxy.http
from mitmproxy import ctx
num = 0
def request(flow: mitmproxy.http.HTTPFlow):
global num
num = num + 1
ctx.log.info("We've seen %d flows" % num)
2.文件定义了变量 addons,addons 是个数组,每个元素是一个类实例,
这些类有若干方法,这些方法实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的方法
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("We've seen %d flows" % self.num)
addons = [
Counter()
]
事件:
1. 针对 HTTP 生命周期
# 收到了来自客户端的 HTTP CONNECT 请求,仅是 client 与 proxy 的之间的交流
def http_connect(self, flow: mitmproxy.http.HTTPFlow):
# 来自客户端的 HTTP 请求的头部被成功读取。此时 flow 中的 request 的 body 是空的。
def requestheaders(self, flow: mitmproxy.http.HTTPFlow):
# 来自客户端的 HTTP 请求被成功完整读取。
def request(self, flow: mitmproxy.http.HTTPFlow):
# 来自服务端的 HTTP 响应的头部被成功读取。此时 flow 中的 response 的 body 是空的。
def responseheaders(self, flow: mitmproxy.http.HTTPFlow):
# 来自服务端端的 HTTP 响应被成功完整读取。
def response(self, flow: mitmproxy.http.HTTPFlow):
# 发生了一个 HTTP 错误。比如无效的服务端响应、连接断开等。注意与“有效的 HTTP 错误返回”不是一回事,后者是一个正确的服务端响应,只是 HTTP code 表示错误而已。
def error(self, flow: mitmproxy.http.HTTPFlow):
2. 针对 TCP 生命周期
3. 针对 Websocket 生命周期
4. 针对网络连接生命周期
5. 通用生命周期

启动:
mitmdump -s addons.py

##################################

转载于:https://www.cnblogs.com/xujinjin18/p/11180851.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值