首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从零开始学mitmproxy抓包工具

从零开始学mitmproxy抓包工具

作者头像
落寞的鱼丶
发布于 2022-02-22 12:49:36
发布于 2022-02-22 12:49:36
4.4K00
代码可运行
举报
文章被收录于专栏:afjhahfhahajkafjhahfhahajk
运行总次数:0
代码可运行

Man In The Middle

mitm是Man In The Middle的首字母缩写,意思是位于中间的人,表明mitmproxy是一个代理,可以拦截请求,实现网络抓包。知名的网络抓包工具有Fiddler、Charles、HttpWatch、WireShark、BurpSuite和Postman等,mitmproxy相对来说,没有这么高的知名度,它相比于以上工具的独特优势是,它提供了Python API,可以编写Python代码对网络请求进行流量录制,从而收集接口信息以及转化为接口自动化用例等。mitmproxy官方文档不但有mitmproxy工具使用介绍,还有代理实现原理,对我们学习掌握网络知识有很大帮助。

安装与使用

pip安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install mitmproxy

mitmproxy是Python开发的,用pip就能安装成功。官方给出了二进制安装包等方法,我觉得作为一款用Python开发的工具,用pip直接安装是更Pythonic的。

命令启动

可以通过3种命令启动mitmproxy:

  • mitmproxy 控制台
  • mitmweb 网页
  • mitmdump 命令行

它们的内容都是一样的,只是UI不一样而已。

手动设置代理

打开以后mitmproxy默认会监听http://localhost:8080,需要设置下代理,把代理服务器设置为这个地址。

Windows可以这样设置:

设置后一定要记得点击保存按钮,否则代理不会生效。

实际上,Charles等网络抓包工具会自动配置代理,而mitmproxy需要手动设置代理,开发团队的解释是因为浏览器版本和配置经常会变化,所以他们建议在网上根据环境搜索方法手动设置。

下载证书

访问http://mitm.it/,如果代理配置没有生效,打开后会是这个界面:

正常的话,会出现证书下载页面:

根据平台选择相应证书安装就OK了。

使用

mitmproxy更其他抓包工具用法类似。

官方用视频演示了mitmproxy如何使用:

https://docs.mitmproxy.org/stable/mitmproxytutorial-userinterface/

并且介绍了5种运行模式:

https://docs.mitmproxy.org/stable/concepts-modes/

读者可以自行阅读下。

mitmproxy工作原理

  1. 客户端(本机)连接代理服务器(http://127.0.0.1:8080),代理服务器连接服务器。
  2. 客户端给代理服务器发请求,代理服务器把请求发送到服务器。

所有请求经过mitmproxy,就可以实现请求拦截。

对于HTTP来说,直接借助mitmproxy传递请求就可以。而对于HTTPS来说,有个SSL/TLS安全认证,必须安装证书,服务器才会认为mitmproxy的请求是可信任的,请求才会成功传递。

HTTPS的代理过程就要复杂很多,客户端先跟mitmproxy建立连接(12步),然后进行安全认证(36步),最后传递请求(7~8步)。

反向代理

假设在本机使用FastAPI启动了个Mock服务,地址为http://127.0.0.1:5000,通过Postman调接口,怎么使用mitmproxy来拦截请求呢?这就需要用到反向代理。

首先以反向代理模式运行mitmproxy,服务器端口为5000,监听端口为8000:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mitmproxy --mode reverse:http://127.0.0.1:5000 --listen-host 127.0.0.1 --listen-port 8000

然后把请求http://127.0.0.1:5000/login里面的5000端口改成8000,访问:

http://127.0.0.1:8000/login

就能在mitmproxy看到抓到请求了:

这样就能在本地使用Mock服务来调试拦截请求的Python代码了。

反向代理,不需要在本机手动设置代理。

Python API

Python API是mitmproxy的特色功能:

能够在Python代码中对拦截的请求进行处理。

addons提供了很多hook函数,比如request:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"""
Basic skeleton of a mitmproxy addon.

Run as follows: mitmproxy -s anatomy.py
"""
from mitmproxy import ctx


class Counter:
    def __init__(self):
        self.num = 0

    def request(self, flow):
        self.num = self.num + 1
        ctx.log.info("We've seen %d flows" % self.num)


addons = [
    Counter()
]

response:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"""Add an HTTP header to each response."""


class AddHeader:
    def __init__(self):
        self.num = 0

    def response(self, flow):
        self.num = self.num + 1
        flow.response.headers["count"] = str(self.num)


addons = [
    AddHeader()
]

启动时加上-s参数指定脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mitmdump -s ./anatomy.py

代码就会在请求拦截时生效了。

更多hook函数请参考官方说明:

https://docs.mitmproxy.org/stable/api/events.html

这里就不再详细说明了。

而关于如何使用mitmproxy录制流量自动生成自动化用例的部分,我会开发完成后集成到tep新版本中,届时再做介绍,敬请期待。

参考资料: mitmproxy官方文档 https://docs.mitmproxy.org/stable/

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
抓包工具mitmproxy | mitmweb基本用法(二)
mitmproxy是Python编写的一款功能完善的代理工具,mitmproxy是一款支持拦截HTTP和HTTPS请求和响应并即时修改它们的交互式中间人代理工具。同时它提供了Python API给开发者编写插件用来自定义对流量进行处理和修改。
王大力测试进阶之路
2022/03/14
12.3K0
抓包工具mitmproxy | mitmweb基本用法(二)
Python好酷|抓包神器 mitmproxy
mitmproxy(Man-in-the-middle attack,中间人攻击代理)是一款提供交互能力的抓包工具,可以用来拦截、修改、保存 HTTP/HTTPS 请求,对于爬虫尤其是基于APP的爬虫来说,是必不可少的一款神器。mitmproxy 基于Python开发,可以通过Python代码对请求和响应进行自定义过滤和修改。
互联网金融打杂
2022/08/01
2K0
Python好酷|抓包神器 mitmproxy
python抓包代理库mitmproxy
python中一个库mitmproxy,可以实现抓包;实现的就是代理的功能;相对于其他软件,优势在于可以编码;
JQ实验室
2022/11/04
1.2K0
mitmproxy 抓包神器-1.环境准备与抓取浏览器请求
常见的抓包工具有fiddler 和 charles, 这些工具都是需要安装本地客户端,python 版的抓包工具可以用 mitmproxy。 mitmproxy 相比Charles、fiddler的优点在于,它可以命令行方式或脚本的方式进行mock
上海-悠悠
2023/01/03
1.6K0
mitmproxy 抓包神器-1.环境准备与抓取浏览器请求
APP爬虫-mitmproxy安装与简单使用
我们通常使用的抓包工具就是Fiddler和Charles这种图形化的,Charles的优点是跨平台,Windows和Mac都可以使用,Fiddler的优点是功能“极其”强大,不仅拥有抓包功能,还拥有中间人攻击的功能,但是使用成本太高了,我们做爬虫开发,使用到Fiddler的功能不过十之二三罢了。今天我们主要讲的是mitmproxy这款工具,这是一款专业的中间人攻击工具,mitmproxy 不仅可以截获请求帮助开发者查看、分析,最最重要的是支持Python进行定制化二次开发。例如:截获浏览器的请求内容,并将数据处理后存储到数据库,再将内容交给浏览器;如果出现异常时,发出邮件通知,并返回给浏览器一个空的页面。 mitmproxy有以下几个特点:
星星在线
2020/05/22
2.3K0
抓包工具mitmproxy环境配置使用(一)
mitmproxy是一款开源的抓包工具,支持SSL的HTTP代理,它可以用于调试HTTP通信,发起中间人攻击等,还可以配合自定义python脚本使用,不同于 fiddler 或 wireshark 等抓包工具,mitmproxy 不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发。
王大力测试进阶之路
2020/08/04
5.7K0
抓包工具mitmproxy环境配置使用(一)
Mitmproxy 抓包工具安装使用
Mitmproxy是一个使用python编写的中间人代理工具,跟Fiddle、Charles等等的抓包工具是差不多的,同样可以用于拦截、修改、保存http/https请求。比起Fiddle、Charles,mitmproxy有一个最大的特点是支持python自定义脚本。
清风穆云
2021/10/18
1.6K0
Mitmproxy 抓包工具安装使用
mitmproxy抓包 | Python实时生成接口自动化用例(三)
前面已经给大家分享了mitmproxy的环境配置和基本使用,文章浏览量很高,相信对抓包工具感兴趣的朋友,已经熟练运用起来了。
王大力测试进阶之路
2022/03/14
4K0
mitmproxy抓包 | Python实时生成接口自动化用例(三)
Mitmproxy 的安装与使用案例
上篇文章简单介绍了手机端的抓包工具fiddler的使用,实现了抓取抖音某用户“喜欢”的视频列表的操作。
singleli
2020/10/22
2.4K0
Mitmproxy 的安装与使用案例
实战|手把手教你如何使用抓包神器MitmProxy
玩爬虫的小伙伴都知道,抓包工具除了MitmProxy外,还有Fiddler、Charles以及浏览器netwrok等
Python研究者
2021/05/13
5K0
实战|手把手教你如何使用抓包神器MitmProxy
使用mitmproxy进行埋点测试
mitmproxy不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发。
zx钟
2021/10/11
1.1K0
最佳网络数据抓包工具mitmproxy
日常测试客户端需求,经常会使用Fiddler、Charles工具,抓取网络请求内容。Fiddler、Charles也有使用上的不足,比如Fiddler仅支持winsows、Charles是收费的,另外Fiddler、Charles在扩展开发脚本上都比较薄弱。
测试加
2022/06/21
9330
最佳网络数据抓包工具mitmproxy
python mitmproxy 文档
1、顾名思义,mitmproxy 就是用于 MITM 的 proxy,MITM 即[中间人攻击],用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。 2、不同于 fiddler 或 wireshark 等抓包工具,mitmproxy 不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发。举例来说,利用 fiddler 可以过滤出浏览器对某个特定 url 的请求,并查看、分析其数据,但实现不了高度定制化的需求,类似于:“截获对浏览器对该 url 的请求,将返回内容置空,并将真实的返回内容存到某个数据库,出现异常时发出邮件通知”。而对于 mitmproxy,这样的需求可以通过载入自定义 python 脚本轻松实现。 3、但 mitmproxy 并不会真的对无辜的人发起中间人攻击,由于 mitmproxy 工作在 HTTP 层,而当前 HTTPS 的普及让客户端拥有了检测并规避中间人攻击的能力,所以要让 mitmproxy 能够正常工作,必须要让客户端(APP 或浏览器)主动信任 mitmproxy 的 SSL 证书,或忽略证书异常,这也就意味着 APP 或浏览器是属于开发者本人的——显而易见,这不是在做黑产,而是在做开发或测试。 4、那这样的工具有什么实际意义呢?据我所知目前比较广泛的应用是做仿真爬虫,即利用手机模拟器、无头浏览器来爬取 APP 或网站的数据,mitmproxy 作为代理可以拦截、存储爬虫获取到的数据,或修改数据调整爬虫的行为。 事实上,以上说的仅是 mitmproxy 以正向代理模式工作的情况,通过调整配置,mitmproxy 还可以作为透明代理、反向代理、上游代理、SOCKS 代理等,但这些工作模式针对 mitmproxy 来说似乎不大常用,故本文仅讨论正向代理模式。 5、python脚本不要小于3.6 6、安装完后,mitmdump 是命令行工具,mitmweb是一个web界面。
用户5760343
2022/05/14
1.2K0
python mitmproxy 文档
四大网络抓包神器,总有一款适合你~
无论是开发还是测试,在工作中经常会遇到需要抓包的时候。本篇博客主要介绍如何在各个平台下,高效的抓包。目前的抓包软件总体可以分为两类,一种是设置代理抓取http包,比如Charles、mitmproxy这些软件。
lyb-geek
2019/09/16
106.1K0
四大网络抓包神器,总有一款适合你~
看我如何骚操作“破解”*查查的sign和天*查的Authorization!!!
1.Python(2或者3) 2.App爬虫神器mitmproxy 3.按键精灵 4.还有之前的强制抓包工具postern
吾爱小白
2020/07/09
4.3K1
Java 配合 mitmproxy HTTPS 抓包调试
今天对接接口,对方给的 Demo 和已有项目用的 HTTP 工具不是一个;后来出现人家的好使,我的死活不通的情况;无奈之下开始研究 Java 抓包,所以怕忘了记录一下……
用户1257393
2018/07/30
2.3K0
Java 配合 mitmproxy HTTPS 抓包调试
使用 mitmproxy 做拦截代理
mitmproxy 就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。
赵云龙龙
2020/02/24
3.8K0
mitmproxy从入门到放弃
在kali中已经默认安装了。其他系统我们需要安装python环境。然后再执行下面命令就行安装。
逍遥子大表哥
2025/07/28
2270
mitmproxy从入门到放弃
轻松入门网络爬虫-LightProxy抓包工具
网络爬虫是一种用于自动化获取互联网上的数据的程序,而抓包工具则是帮助爬虫开发者分析和调试网络请求和响应的重要工具。在众多抓包工具中,LightProxy凭借其简单易用和丰富的功能而备受青睐。本文将为您介绍LightProxy抓包工具的基础知识和使用方法,帮助您轻松入门网络爬虫的世界。
用户614136809
2023/09/27
1K0
面试官问我会不会APP抓包,我..
App抓包应该是每个爬虫工程师都避不开的话题,在之前我也写过关于自动参与「抽奖助手」 抽奖的文章,当时使用的抓包工具是Charles,有需要的朋友可以翻下之前的文章。
猴哥yuri
2019/04/25
1.3K0
面试官问我会不会APP抓包,我..
相关推荐
抓包工具mitmproxy | mitmweb基本用法(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验