Mitmproxy的使用

news2024/9/22 19:28:55

目录

1.背景

2.Mitmproxy

       1)Windows安装

        2)定制开发

        3)启动

3.使用

4.问题

5.参考资料


1.背景

        简单来说,背景就两个字“偷懒”,一个字“”。在API自动化脚本的开发中,一般都需要封装一下接口。如果没有swagger等接口文档,常见做法就是人工操作页面,然后通过F12去查看这些API,再copy到脚本里面做处理。这个过程挺繁琐的,费时费力,还容易出错,尤其有特殊headers时,经常只有在调试才发现。当然,也可以通过工具录制这些API,jmeter/ badboy/ fiddler/ charles等等都行。可现实是,要么因为环境特殊录制不了,就算能录制也是一通复杂的配置;要么就是没有办法直接得到脚本,需要人工做导出操作。实在不符合“懒”的气质~~~于是,一直在思考有没有更“懒”的方法呢?

        找了不少方法,中间过程就不赘述了,最后选择了mitmproxy,能用还能定制,就它了。

2.Mitmproxy

        MITM(Man-in-the-middle,中间人)简而言之就是个代理,可以拦截诸如HTTP/ SMTP/ SSL/ SOCK4/5协议类型的信息。区别于fiddler/ charles这样的工具,可以命令行或者脚本对数据做一些定制处理。

       1)Windows安装

        第一步:pip install mitproxy(这里安装的是v5.3.0)

        第二步(可能有):配置环境变量。这里自己没有配置好像也能用,不明所以。。。

        第三步(可能有):安装证书。下载对应版本的证书,导入到浏览器。证书下载地址:

Downloads (mitmproxy.org)。因为不是管理员身份另外也因为是自己测试环境,所以没有安装证书,而是在启动时做了一点小改动也能使用。

        第四步:校验是否安装成功。在windows上无法使用mitmproxy,只能用mitmweb

        如果上面步骤有不对,请看官移步度娘问问,然后不吝赐教~~

        2)定制开发

        这里是为了将被测环境上操作时的请求都保留下来,所以需要在这里做一些修改,直接上代码:

import json

from mitmproxy import http

class CaptureProxy:
    def request(self, flow: http.HTTPFlow) -> None:
        request_info = {
            "method": flow.request.method,
            "url": flow.request.pretty_url,
            "headers": dict(flow.request.headers),
            "content": flow.request.content.decode()
      }

        with open("requests.json", "a") as f:
            json.dump(request_info, f)
            f.write("\n")

addons = [
    CaptureProxy()
]

     还可以在这里过滤指定的host或者api。前置条件:

fixed_host = "www.baidu.com"  # 只抓取baidu的请求
fixed_url = "/api/"        # 只抓取API请求,那些css/ html/ json/ js等等都不考虑
class CaptureProxy:
    def request(self, flow: http.HTTPFlow) -> None:
        global fixed_host, fixed_url

        if flow.request.host != fixed_host:
            return
        
        if fixed_url not in flow.request.pretty_url:
            return

        3)启动

mitmweb -s my_proxy.py --ssl-insecure

        启动后,在默认浏览器会启动这样的页面。mitmproxy默认的监听端口是8080,如果需要修改端口,可以使用 -p <新端口>。--ssl-insecure是因为被测环境是HTTPS,这里不想认证。这种方式有风险,如果是公共环境或者生产环境,慎用!!!

3.使用

        第一步:在浏览器的设置中,将代理设置为http://localhost,端口:8080。这是因为mitmproxy是启动在本地的,端口号与mitmproxy一致。

        第二步:打开被测环境,一通操作之后,在该脚本的工程目录下会生成“requsts.json”文件,里面记录了所有http请求,注意,是包含.css/ .js/ .json/ api等的所有请求。

4.问题

1)502 Bad Gateway。TlsProtocolException("Cannot establish TLS with xxx.xxx.xxx.xxx:443"(sni: None): TlsException('Cannot validate certificate hostname without SNI')")

        启动代理并配置浏览器,由于mitmproxy默认只监听http请求,对被测环境这种https的请求,要么安装证书,要么就如同前面步骤里面那样,启动的时候增加参数--ssl-secure

5.参考资料

mitmproxy · GitHub

mitmproxy - an interactive HTTPS proxy

mitmproxy抓包原理_怪兽N的博客-CSDN博客

MitmProxy介绍以及使用_Cjingger_mounce的博客-CSDN博客

mitmproxy的安装与使用_mitmproxy安装_默默前行的虫虫的博客-CSDN博客

mitmproxy 的安装使用 与 模拟器上的证书配置_mitmproxy证书_Yy_Rose的博客-CSDN博客

 使用mitmweb抓包教程_feiyu361的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/814980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023届浙江大学MPA提面A资格经验总结分享

本人是去年报考的浙大MPA项目&#xff0c;并通过提面获得了A资格&#xff0c;新一年浙大MPA项目提前批面试已经开始了&#xff0c;受达立易考周老师邀请来分享下我的提面经验&#xff0c;希望我的经验能对还在迷茫中的小伙伴有所帮助。 点开提面通知&#xff0c;首先看到…

2023项目管理产品排行榜:优化企业项目管理的顶级选择

随着全球竞争加剧和商业环境的变化&#xff0c;企业对项目管理的需求越来越迫切。优秀的项目管理产品能够帮助企业提高工作效率、资源利用率和项目交付质量。 本文参考了不同的产品测评网站&#xff0c;在众多项目管理产品中&#xff0c;总结了以下几款备受好评的项目管理工具&…

UNISOT让食品欺诈无处遁形

​​发表时间&#xff1a;2023年5月11日 全世界的消费者开始越来越关注食物的来源和采购方式。这是因为人们渴望吃得更健康、更用心&#xff0c;同时人们也认识到了购买可持续且合乎伦理道德的产品的必要性。 近年来&#xff0c;人们对食品溯源的渴望进一步加速&#xff0c;原…

go 中的代码漏洞检查

前言 不知道大家在开发 go 项目中有没有遇到过一些第三方包或者官方包中出现漏洞的问题&#xff0c;这些漏洞可能会影响到代码的功能、性能或者安全性。 现在针对这一问题&#xff0c;go 团队提供了 govulncheck 工具&#xff0c;帮助开发者快速地发现和修复这些漏洞。 什么…

一套AI+医疗模式的医院智慧导诊系统源码:springboot+redis+mybatis plus+mysql

一套AI医疗模式的医院智慧导诊系统源码 相关技术&#xff1a; 技术架构&#xff1a;springbootredismybatis plusmysqlRocketMQ 开发语言&#xff1a;java 开发工具&#xff1a;IDEA 前端框架&#xff1a;Uniapp 后端框架&#xff1a;springboot 数 据 库&#xff1a;mys…

利用Windows自带组件安全清理WinSXS目录的几种方法

WinSXS&#xff08;Windows Side-by-side&#xff09;是 Windows 操作系统的核心组件之一&#xff0c;位于系统目录下的一个文件夹中&#xff0c;它包含了操作系统的许多重要文件和组件&#xff0c;以及更新时对老旧软件版本的备份&#xff0c;它会随着时间的推移不断增加&…

ssh安全远程管理

目录 1、什么是ssh 2、ssh登陆 3、ssh文件传输 1、什么是ssh ssh是 Secure Shell 的缩写&#xff0c;是一个建立在应用层上的安全远程管理协议。ssh 是目前较为可靠的传输协议&#xff0c;专为远程登录会话和其他网络服务提供安全性。利用ssh 协议可以有效防止远程管理过程中…

vue3 axios接口封装

在Vue 3中&#xff0c;可以通过封装axios来实现接口的统一管理和调用。封装后的接口调用更加简洁&#xff0c;代码可维护性也更好。以下是一个简单的Vue 3中axios接口封装的示例&#xff1a; 1.首先&#xff0c;安装axios和qs&#xff08;如果需要处理复杂数据&#xff09;&am…

C#winform颜色、字体对话框控件使用实例

本文讲解C#winform颜色、字体对话框控件的使用 创建winform项目,添加按钮 代码如下: using System; using System.Drawing; using System.Windows.Forms;namespace ColorDialogDemo {public partial class Form1 : Form{public Form1(){InitializeComponent();}//颜色对话框…

移动硬盘不显示怎么办?正确解决方式看这里!

移动硬盘为存储带来了很大的方便&#xff0c;在对数据存储时&#xff0c;可做到即插即用&#xff0c;且其体积小、容量大&#xff0c;且比较安全可靠。但在实际的使用中&#xff0c;也会出现各种问题。请看下面2个常见案例。 案例1&#xff1a;“各位朋友&#xff0c;我新买了一…

史上最全免费在线 PDF 格式转换网站集合,10款利器赶紧收藏

hi&#xff0c;大家好我是技术苟&#xff0c;每天晚上22点准时上线为你带来实用黑科技&#xff01;由于公众号改版&#xff0c;现在的公众号消息已经不再按照时间顺序排送了。因此小伙伴们就很容易错过精彩内容。喜欢黑科技的小伙伴&#xff0c;可以将黑科技百科公众号设为标星…

hive函数大全

hive函数大全 一级目录!!%&*-/<<<><>>>^absacosadd_monthsandarrayarray_containsasciiasinassert_trueatanavgbase64betweenbinbroundcasecbrtceilceilingchrcoalescecollect_listcollect_setconcatconcat_wscontext_ngramsconvcorrcoscountcovar…

Unity老虎机效果实现

实现效果如下&#xff1a; 实现效果为&#xff1a;外部传入数值&#xff0c;正常显示 老虎机抽取效果 用户可自定义行为&#xff1a;1&#xff0c;抽取的显示&#xff1b;2&#xff0c;抽取的最低时间 实现代码如下&#xff0c;可自行改写&#xff1a; using System.Collect…

Moebius数据库多活集群

背景 数据库是信息化的基石&#xff0c;支撑着整个业务系统&#xff0c;发挥着非常重要的作用&#xff0c;被喻为“IT的心脏”。因此&#xff0c;让数据库安全、稳定、高效地运行已经成为IT管理者必须要面对的问题。数据库在底层架构层面需要满足以下几点建设要求&#xff1a; …

虚拟机安装的问题

CentOS7报错: Host SMBus Controller not enabled! 1.在上图界面中直接输入root用户的密码登录到系统 2.输入命令&#xff0c;lsmod | grep i2c 3.输入命令&#xff0c;vi /etc/modprobe.d/blacklist.conf 创建黑名单&#xff0c;添加以下内容&#xff1a; blacklist i2c_piix…

851. 喧闹和富有;1765. 地图中的最高点;1171. 从链表中删去总和值为零的连续节点

851. 喧闹和富有 核心思想&#xff1a;这题的题意是找到比b有钱的人且这个人是最安静的人。简单的想法就是找出统计出所有b的有钱人&#xff0c;然后给有钱人的安静值排个序即可。给安静值排序这个我们可以进行优化一下&#xff0c;按照常规思路&#xff0c;我们统计出a的儿子…

Day02-作业(JavaScriptVue)

作业1&#xff1a;实现5秒之后&#xff0c;当前页面直接跳转到官网首页&#xff08;首页地址&#xff1a;https://www.itcast.cn&#xff09; 提示&#xff1a; 5秒之后&#xff0c;才触发某一个动作 素材&#xff1a; <!DOCTYPE html> <html lang"en"&…

【二叉树进阶】搜索二叉树的性能分析及其应用

文章目录 前言1. 二叉搜索树的性能分析2. 二叉搜索树的应用2.1 K模型2.2 KV模型英汉互译统计次数 3. 源码展示3.1 KV结构改造3.2 测试 前言 上一篇文章我们学习了搜索二叉树的实现&#xff0c;这篇文章我们来对搜索二叉树进行一个性能分析&#xff0c;并来讲解一下它的应用。 1…

OpenCV4.3 Java 编程入门:透明度与抠图

1. 基础知识 JPG 格式图片有损压缩和不支持半透明&#xff0c;如果想在图片上添加透明通道&#xff0c;一定不要用 JPG 格式的图片&#xff1b;PNG&#xff1a;既支持3通道RGB图像&#xff0c;也支持4通道RGBA图像&#xff08;红色、绿色、蓝色和透明度&#xff09;&#xff1…

一篇文章帮你弄懂邻接矩阵,邻接表和链式前向星的区别

前言&#xff1a; 在学C的时候&#xff0c;面对各种各样的存图方式&#xff0c;脑子都大了不少&#xff0c;各种算法还在向我冲来&#xff0c;结果一个邻接矩阵/邻接表/链表轻松给了我一下暴击就直接让我KO了&#xff0c;趁着脑子还算清楚&#xff0c;详细的介绍下这三种存图方…