wap网站生成系统,什么网站是用html做的,怎么制作网站视频教程,校园文化网站建设在测试过程中#xff0c;我们经常用到Charles、Fiddler等抓包工具#xff0c;通过抓取http请求进行相关的测试、问题排查。但是在一些特殊场景下#xff0c;例如我们的数据传输是加密的#xff0c;可能需要抓取到数据后再进行解密#xff0c;这个使用抓包工具就不能完全符…在测试过程中我们经常用到Charles、Fiddler等抓包工具通过抓取http请求进行相关的测试、问题排查。但是在一些特殊场景下例如我们的数据传输是加密的可能需要抓取到数据后再进行解密这个使用抓包工具就不能完全符合我们的需求。mitmproxy是什么mitmproxy 就是用于 MITM 的 proxyMITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求保障服务端与客户端的通信其次会适时的查、记录其截获的数据或篡改数据引发服务端或客户端特定的行为。不同于 fiddler、Charles 或 wireshark 等抓包工具mitmproxy 不仅可以截获请求帮助开发者查看、分析更可以通过自定义脚本进行二次开发。举例来说利用 fiddler 可以过滤出浏览器对某个特定 url 的请求并查看、分析其数据但实现不了高度定制化的需求类似于“截获对浏览器对该 url 的请求将返回内容置空并将真实的返回内容存到某个数据库出现异常时发出邮件通知”。而对于 mitmproxy这样的需求可以通过载入自定义 python 脚本轻松实现。但 mitmproxy 并不会真的对无辜的人发起中间人攻击由于 mitmproxy 工作在 HTTP 层而当前 HTTPS 的普及让客户端拥有了检测并规避中间人攻击的能力所以要让 mitmproxy 能够正常工作必须要让客户端(APP 或浏览器)主动信任 mitmproxy 的 SSL 证书或忽略证书异常。mitmproxy简单理解就是个抓包工具它可以提供命令行界面、web界面还可以通过python脚本实现自定义的请求拦截、篡改等自定义的操作。mitmproxy模块安装pip3 install mitmproxy完成后系统将拥有 mitmproxy、mitmdump、mitmweb 三个命令由于 mitmproxy 命令不支持在 windows 系统中运行(这没关系不用担心)我们可以拿 mitmdump 测试一下安装是否成功执行mitmdump --version出现下面提示即安装成功Mitmproxy: 5.1.1Python: 3.6.1OpenSSL: OpenSSL 1.1.1g 21 Apr 2020Platform: Darwin-16.7.0-x86_64-i386-64bitmitmproxy启动要启动 mitmproxy 用 mitmproxy、mitmdump、mitmweb 这三个命令中的任意一个即可这三个命令功能一致且都可以加载自定义脚本唯一的区别是交互界面的不同。启动命令mitmdump -p 8889 -s run.py-p 指定代理端口-s 指定要执行的脚本文件如果是启动web界面 可以在127.0.0.1:8081上看到mitmproxy脚本在启动mitmproxy的时候可以指定脚本脚本的使用规则如下import mitmproxy.httpfrom mitmproxy import ctxclass Counter():def __init__(self):self.num0def request(self, flow: mitmproxy.http.HTTPFlow):self.num1if api.pre.sanjieke.cn in flow.request.url:ctx.log.info(we have seen %d flow % self.num)def response(self, flow: mitmproxy.http.HTTPFlow):if api.pre.sanjieke.cn in flow.request.url:import jsondata json.loads(str(flow.response.content, encodingutf-8))ctx.log.info(data {}.format(data))addons [Counter()]1. 定义一个规则类可以通过设置http生命周期方法来自定义相关代理设置例如counter类中的request和response即在http请求中的请求和返回2.将类加入到addons数组中启动mitmproxy时带上该py文件即可当然除了request和response还有其它的阶段这两个是常用的。mitmproxy除了可以定义处理http请求生命周期各个阶段还可以处理tcp链接生命周期、websocket生命周期等基本常用的就是request、response这两个。脚本中可以通过ctx进行相关日志打印。以上就是mitmproxy的简单使用。