##################################
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 ##################################
总结以上是内存溢出为你收集整理的mitmproxy全部内容,希望文章能够帮你解决mitmproxy所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)