中文官网 https://ptorch.com/docs/10/mitmproxy-concepts-options

mitmproxy抓包工具

1. mitmproxy 介绍与安装

需要安装python环境

1. mitmproxy 是什么

mitmproxy是一组工具,可为HTTP/1,HTTP/2和WebSockets提供交互式的,具有SSL/TLS功能的拦截代理。

拦截HTTP和HTTPS请求和响应并即时修改它们;

保存完整的HTTP对话以供以后重播和分析;

重播HTTP对话的客户端;

重播先前记录的服务器的HTTP响应;

反向代理模式将流量转发到指定的服务器;

macOS和Linux上的透明代理模式;

使用Python对HTTP流量进行脚本化更改;

即时生成用于拦截的SSL/TLS证书

2. 安装

直接开始安装

mitmproxy 命令不支持在 windows 系统中运行,所以可以选择linux虚拟机来完成

在 linux 中:

sudo pip3 install mitmproxy

在 windows 中,以管理员身份运行 cmd 或 power shell:

pip3 install mitmproxy

安装结束。

完成后,可以执行 mitmproxy 、 mitmdump 、 mitmweb 三个命令,我们可以拿 mitmdump 测试一下安装是否成功,执行:

| PS D:\kyls_working> mitmdump --version

Mitmproxy: 8.0.0

Python: 3.9.6

OpenSSL: OpenSSL 1.1.1m 14 Dec 2021

Platform: Windows-10-10.0.22000-SP0

运行

要启动 mitmproxy 用

mitmproxy 、

mitmdump 、

mitmweb

这三个命令中的任意一个即可,这三个命令功能一致,且都可以加载自定义脚本,唯一的区别是交互界面的不同。

!!!!在运行过程需要安装mitmproxy 的安全证书

http://mitm.it/ 点击这个链接去选择安装安全证书


然后选择响应的系统去下载安装即可

安装过程如下

然后下一步确定即可

记得一定要重启浏览器

1. mitmproxy

![mitmproxy-list.png](../../_resources/2022-03-22 17-32-12屏幕截图.png)

使用

来设置代理服务器

然后在浏览器上设置好 就可以使用mitmproxy

在mitmproxy 命令行中 通过

  • 上下键 来选择包
  • 回车是进入
  • tab 是切换 request response 和detail
  • ESC+q 是退出

2. mitmdump

mitmdump -w test.txt

将抓到的数据 存入test.txt

然后就会发现 自己的文件一堆乱码

没关系 我们之后用python去读取 就行了

3.mitmweb

直接在终端输入 mitmweb 会发现会直接进入浏览器

然后刷新你的网站 就会发现在web端抓到你的数据包了

和fidder一样是一个展示窗口

2. mitmproxy 手机端抓包

mitmproxy

mitmdump

mitmweb

设置mitmproxy

在linux上启动mitmproxy

会启动8080端口

如果要改变端口号 使用如下命令

mitmproxy -p 8888

监听的端口号就变成了8888

设置手机模拟器

在 夜神模拟器的手机中

长按wifi 修改 手机的代理服务器的ip地址

修改为你的mitmproxy 的服务器地址和设置的端口号

| 然后返回浏览器

输入 mitm.it 安装 安卓的证书

即可完成设置

查看证书

设置——> 安全——>受信任的凭据——>用户

清除数据包

按键盘上的 z

1. 功能键

访问浏览器

然后在我们的手机浏览器中输入http://www.baidu.com

即可完成抓包

查看某个数据包

上下键 选择数据包 回车进入详细数据包

退出某个数据包

q

清除数据包

z

退出

按下 q 然后再使用y完成退出

2. 数据包的过滤

启动mitmproxy 并且启动手机

打开网址 www.baidu.com

就会发现我们抓到了很多数据包

然后我们 输入字母 f

查看流选择器

在交互式上下文中,mitmproxy具有一组在当前视图上运行的便捷流选择器:

| @all 所有流量

@focus 当前关注的流程

@shown 当前显示的所有流

@hidden 当前隐藏所有流

@marked 所有标记的流

@unmarked 所有未标记的流

这些经常在命令和键绑定中使用

例子

  1. 筛选出非200的请求

set viewer_filter '!~c 200'

  1. 筛选出百度这个域名的所有请求

set viewer_filter '~d baidu.com'

  1. 筛选post请求且是百度的请求

set viewer_filter '~m post & ~d baidu.com'

set viewer_filter '~m post & ~u baidu.com'

3. mitm 设置断点拦截

输入字母 i 以此来 写断点条件

请求篡改

例:

  1. 断点 百度域名且是 get的

set intercept '~d baidu.com & ~m get'

![断点 百度域名且是 get的.png](../../_resources/断点 百度域名且是 get的.png)

然后选择红色的数据包 点击回车进入

断点输入E修改详细数值

然后修改 我们的url 修改为

https:xw.qq.com 并且删除掉我们headers里的hosts

然后按q退出到列表页

按下 a 进行重新载入 即可完成请求篡改

响应篡改

进入 调试界面 进入

我们进入 response.body 即可 完成响应篡改

3. mitmdump 的使用

!!!注意更换设备就要再安装一台证书

mitmdump 非常重要 他可以和python脚本进行交互

在windows下直接输入

mitmdump

更换端口号

mitmdump -p 8888

载入自定义python脚本

mitmdump -p 8888 -s test.py

脚本有固定格式

| # 必须这么写

def request(flow):

print(flow.request.headers)

我们设置好代理 安装好安全证书后 访问 http://httpbin.org/get

就会发现我们的服务端显示 headers的全部内容

第一个是我们需要的信息

然后我们会可以使用 mitmproxy 的ctx中的log日志模块 来记录我们的内容


from mitmproxy import ctx
# 必须这么写
def request(flow):
# print(flow.request.headers)
# # 请求头
# ctx.log.info(str(flow.request.headers))
# ctx.log.warn(str(flow.request.headers))
# ctx.log.error(str(flow.request.headers)) # # 请求的链接地址
# ctx.log.error(str(flow.request.url))
# # 请求的主机头
# ctx.log.error(str(flow.request.host))
# # 请求的方法
ctx.log.error(str(flow.request.method))
# # 请求的路径
# ctx.log.error(str(flow.request.path))

重新启动我们的mitmproxy 并且重新访问一下url就会得到……

这样就能对颜色进行区分

也可以对响应内容进行访问

def response(flow):
# 响应的状态码
ctx.log.error(str(flow.response.status_code))
# 响应的内容
ctx.log.error(str(flow.response.text))

使用mitmdump 代理

mitmdump -s test.py -p 8889 --mode upstream:https://xxx.xxx --stream-auth 通行证书+密码 -p 8889

mitmproxy抓包工具的更多相关文章

  1. 从零开始学mitmproxy抓包工具

    Man In The Middle mitm是Man In The Middle的首字母缩写,意思是位于中间的人,表明mitmproxy是一个代理,可以拦截请求,实现网络抓包.知名的网络抓包工具有Fi ...

  2. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

  3. Charles 抓包工具安装和采坑记录

    Charles 抓包工具安装和采坑记录 网络抓包是解决网络问题的第一步,也是网络分析的基础.网络出现问题,第一步肯定是通过抓包工具进行路径分析,看哪一步出现异常.做网络爬虫,第一步就是通过抓包工具对目 ...

  4. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总,使用mono运行filddler

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

  5. Jmeter实现登录bugfree、新建bug、解决bug脚本(抓包工具实现)

    环境 Chrome jmeter3.1 fiddler4 win7 32位 Linux CentOs6.4 bugfree3.0.1 链接:http://pan.baidu.com/s/1gfHpbp ...

  6. 抓包工具Wireshark过滤器

    抓包工具WireShark分为两种过滤器: 捕捉过滤器(CaptureFilters) 显示过滤器(DisplayFilters) 捕捉过虑器语法: Protocol  Direction  Host ...

  7. 跨平台网络抓包工具-Microsoft Message Analyzer

    Microsoft Message Analyzer (MMA 2013)是微软最受欢迎的Netmon的最新版本. 在Netmon网络跟踪和排除故障功能的基础上提供了更强大的跨平台网络分析追踪能力.园 ...

  8. Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布

    来自官方日志的喜悦 被誉为全新开始的消息分析器时代,由MMA为您开启,博客原文写的很激动,大家可以点击这里浏览:http://blogs.technet.com/b/messageanalyzer/a ...

  9. 网络抓包工具-Wireshark学习资料

    wireshark一个非常牛逼的网络抓包工具.转载一系列博文 一站式学习Wireshark(一):Wireshark基本用法 一站式学习Wireshark(二):应用Wireshark观察基本网络协议 ...

随机推荐

  1. HCIA-Datacom 3.3 实验三:以太网链路聚合实验

    实验介绍 随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出越来越高的要求.在传统技术中,常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够 ...

  2. 使用Python的selenium库制作脚本,支持后台运行

    本文介绍如何使用Python的selenium库制作脚本.概念:       Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome.Firefox.Safari等主流界面 ...

  3. [CSP-S 2019 day2 T1] Emiya家今天的饭

    题面 题解 不考虑每种食材不超过一半的限制,答案是 减去 1 是去掉一道菜都不做的方案. 显然只可能有一种菜超过一半,于是枚举这种菜,对每个方式做背包即可(记一维状态表示这种菜比别的菜多做了多少份). ...

  4. 中国剩余定理+扩展中国剩余定理 讲解+例题(HDU1370 Biorhythms + POJ2891 Strange Way to Express Integers)

    0.引子 每一个讲中国剩余定理的人,都会从孙子的一道例题讲起 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 1.中国剩余定理 引子里的例题实际上是求一个最小的x满足 关键是,其中 ...

  5. rh358 002 fact变量获取 ansible配置网络 service_facts

    通过ansible 获取网络信息 1.如何获取fact事实变量 方式1: ansible servera -m servera 方式2: 剧本 [root@workstation ansible]# ...

  6. 2.窗口部件-对话框QDialog

    1.模态和非模态 看代码 widget.cpp #include "widget.h" #include "ui_widget.h" #include<Q ...

  7. 第一百篇:JS异步

    好家伙,打工人要打工,博客会更新的没有以前频繁了   芜湖,一百篇了,这篇写一个比较难的异步(其实并不难理解,主要是为promise铺垫)   老样子,先补点基础: 1.进程 来吧,新华字典    大 ...

  8. 异步编程promise

    异步编程发展 异步编程经历了 callback.promise.async/await.generator四个阶段,其中promise和async/await使用最为频繁,而generator因为语法 ...

  9. .NET 6 EFCore WebApi 使用 JMeter 进行吞吐量测试

    .NET 6 EFCore WebApi 使用 JMeter 进行吞吐量测试 开发环境 VS2022 .NET 6 测试环境 测试工具 接口压力测试工具:JMeter 数据库 MySQL 5.7 数据 ...

  10. 第六章:Django 综合篇 - 12:聚合内容 RSS/Atom

    Django提供了一个高层次的聚合内容框架,让我们创建RSS/Atom变得简单,你需要做的只是编写一个简单的Python类. 一.范例 要创建一个feed,只需要编写一个Feed类,然后设置一条指向F ...