Mac下使用mitmproxy抓包HTTPS数据方法详解

在Mac上常用的抓包软件是Charles,网上关于Charles的教程很多,这里介绍另一个抓包神器mitmproxy。mitmproxy是一款可交互式的命令行抓包工具,它除了可以抓包查看http/https请求,还有一个很强大的功能是拦截并修改request或者response,后面我会用实际例子演示如何修改知乎的回答:)

安装

mitmproxy官网介绍了用以下命令来安装

pip install mitmproxy

我在实际安装过程中遇到了一些坑,首先是OSXElCapitan及以上的系统版本在安装时会出现six模块依赖错误,具体可以看这儿的讨论。还有一个问题是安装过程中会出现权限错误,需要以root权限执行。最后用以下命令成功安装,安装不了需要墙一下

pip install mitmproxy --ignore-installed six

开始使用

首先需要配置一下网络环境,将手机和电脑连在同一个wifi环境下,然后进入手机的设置-无线局域网,点击当前连接的wifi进入详情设置页面,在http代理那一栏输入当前连接的ip地址,端口填8080,这个ip地址可以在电脑上的系统偏好-网络里查看,配置完成如下图

网络环境配置完成后我们可以开始实际的抓包了,只需在电脑上打开终端(命令行操作窗口),然后输入mitmproxy-p8080,如果你看到如下页面说明你已成功进入抓包模式,迈出了第一步,cheer~

接下去你可以用手机打开一些App,不出意外你能看到一些http请求的列表。这时候我们还无法抓到https的包,还需要做一些额外配置。

下面的操作是针对iPhone手机,其他设备也类似。用iPhone打开Safari浏览器并输入mitm.it,这时你会看到如下页面

选择对应平台并安装证书,安装完成后就可以抓https的包了,官网上解释了这个工具是如何工作的

注意:用浏览器打开时需要已经在抓包模式,否则是无法看到上述页面的

好了,到这里我们已经完成了所有的准备工作,接下去就和我一起实际体验一下https的抓包过程吧。

这里以知乎为例,用手机打开知乎,我们应该能看到知乎的请求出现在列表里了,类似下图:

键盘上下移动,Enter键进入查看详情,按Tab键切换顶部导航栏,如下图所示

Tips:输入z可以清空列表,输入f再输入~uxxx可以过滤出url为xxx的请求,更多匹配规则输入?查看

请求拦截

上面演示的是常规的操作,下面介绍一下mitmproxy的另一强大功能,拦截修改request和response。

输入i,然后输入~s再按回车键,这时候就进入了response拦截模式。如果输入~q则进入request的拦截模式,更多的命令可以输入?查看。拦截模式下的页面显示如下图所示,

其中橘红色的表示请求正被拦截,这时Enter进入后再按e就可以修改request或者response。修改时是用vim进行编辑的,修改完成后按a将请求放行,如果要放行所有请求输入A即可。

下图是我修改了某个答案的response请求将回答者的名字做了修改,因为只修改了response并不会影响其他的用户显示:)

上面提到的那些指令在输入?后都能查看到,如下图,另外官网上也有很详细的说明

我用上述方式尝试了大多数的App,包括淘宝、微博,都能抓到https的包,有些有加密,有些没有加密。但是简书做了防中间人攻击的设置,一启用抓包模式就显示网络错误1012,还是做的很不错的,赞一个~

按照上面的过程就可以https抓包了,如果有遇到问题可以联系我,记得抓完后将手机wifi设置里的http代理关闭。开始实际体验一下吧,enjoy~

更多关于抓包HTTPS数据的文章大家可以参考下面的相碰链接

(0)

相关推荐

  • 详解安装mitmproxy以及遇到的坑和简单用法

    mitmproxy 是一款工具,也可以说是 python 的一个包,在命令行操作的工具. MITM 即中间人攻击(Man-in-the-middle attack) 使用这个工具可以在命令行上进行抓包,还可以对所抓到的包进行脚本处理,非常有用. 安装 mitmproxy 安装这个我们必须先安装了 pip. pip 在安装了 python之后自带的,如果你安装了 python 就可以忽略了,如何安装这里就不说了,只说安装 mitmproxy 打开命令行,输入 pip install mitmpro

  • python代理工具mitmproxy使用指南

    前言 mitmproxy 是 man-in-the-middle proxy 的简称,译为中间人代理工具,可以用来拦截.修改.保存 HTTP/HTTPS 请求.以命令行终端形式呈现,操作上类似于Vim,同时提供了 mitmweb 插件,是类似于 Chrome 浏览器开发者模式的可视化工具. 它是基于Python开发的开源工具,最重要的是它提供了Python API,你完全可以通过Python代码来控制请求和响应,这是其它工具所不能做到的,这点也是我喜欢这个工具的原因之一. 安装 sudo pip

  • python使用mitmproxy抓取浏览器请求的方法

    最近要写一款基于被动式的漏洞扫描器,因为被动式是将我们在浏览器浏览的时候所发出的请求进行捕获,然后交给扫描器进行处理,本来打算自己写这个代理的,但是因为考虑到需要抓取https,所以最后找到Mitmproxy这个程序. 安装方法: pip install mitmproxy 接下来通过一个案例程序来了解它的使用,下面是目录结构 sproxy |utils |__init__.py |parser.py |sproxy.py sproxy.py代码 #coding=utf-8 from pprin

  • Mac Charles抓包工具详细介绍

     Mac Charles抓包工具 不过可惜的是,Fidder使用C#开发的,所以就不能在Mac上使用了,不过还有另外一个抓包神器,就是Charles,它是Java开发的,所以跨平台,不仅可以在Mac上使用,Linux以及Window下都是可以使用的,当然需要安装JDK,才能运行,同时还有一个问题就是他是收费的. 一.下载 先到它的官网http://www.charlesproxy.com/可下载到最新版本. 这个是3.9.3版本的,下载下来,安装就不多说了,很easy....打开界面: 二.破解

  • Mac下使用mitmproxy抓包HTTPS数据方法详解

    在Mac上常用的抓包软件是Charles,网上关于Charles的教程很多,这里介绍另一个抓包神器mitmproxy.mitmproxy是一款可交互式的命令行抓包工具,它除了可以抓包查看http/https请求,还有一个很强大的功能是拦截并修改request或者response,后面我会用实际例子演示如何修改知乎的回答:) 安装 mitmproxy官网介绍了用以下命令来安装 pip install mitmproxy 我在实际安装过程中遇到了一些坑,首先是OSXElCapitan及以上的系统版本

  • Linux下使用tcpdump抓包的实现方法

    很多时候我们的系统部署在Linux系统上面,在一些情况下定位问题就需要查看各个系统之间发送数据报文是否正常,下面我就简单讲解一下如何使用tcpdump抓包 tcpdump是Linux下面的一个开源的抓包工具,和Windows下面的wireshark抓包工具一样, 支持抓取指定网口.指定目的地址.指定源地址.指定端口.指定协议的数据. 1.安装tcpdump yum install -y tcpdump 2.常见的使用方法 抓取所有经过 eth2 目的或源地址是 192.168.1.2 的网络数据

  • Mac下关于PHP环境和扩展的安装详解

    一直使用windows和Centos进行开发,之前公司配了Mac本,放家里吃灰了一年,新公司还是Mac,无奈只好从头摸索. php安装主要使用brew,请注意 由于git上原homebrew/php已经停掉,新的均迁移到到brew/core上,因此之前的安装方法无法使用,请注意!!!!! 安装php等操作均使用以下步骤: 1.搜索可用php版本 brew search php 2.安装指定的php版本 brew install php@7.1 3.启动php或停止php服务 brew servi

  • javascript解析json格式的数据方法详解

    JSON (JavaScript Object Notation)是一种简单的数据格式,比xml更轻巧. 它是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包.那么如何用JavaScript来解析json呢? 首先,科普一下json.在json中,有两种结构:对象和数组. 一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"后跟一个":"

  • 对python3 Serial 串口助手的接收读取数据方法详解

    其实网上已经有许多python语言书写的串口,但大部分都是python2写的,没有找到一个合适的python编写的串口助手,只能自己来写一个串口助手,由于我只需要串口能够接收读取数据就可以了,故而这个串口助手只实现了数据的接收读取. 创建串口助手首先需要创建一个类,重构类的实现过程如下: #coding=gb18030 import threading import time import serial class ComThread: def __init__(self, Port='COM3

  • python更新数据库中某个字段的数据(方法详解)

    连接数据库基本操作,我把每一步的操作是为什么给大家注释一下,老手自行快进. 请注意这是连接数据库操作,还不是更新. import pymysql #导包 #连接数据库 db = pymysql.connect(host='localhost', user='用户名', password='数据库密码', port=3306, db='你的数据库名字') #定义游标 cursor = db.cursor() #sql语句 sql = 'select * from students;' cursor

  • 在Django下测试与调试REST API的方法详解

    对于大多数研发人员来说,都期望能找到一个良好的测试/调试方法,来提高工作效率和快速解决问题.所谓调试,偏重于对某个bug的查找.定位.修复:所谓测试,是检验某个功能是否达到预期效果.测试发现问题后进行调试,从而解决问题. 对于后台研发来说,往往没有客户端研发(Windows/Android等等)那样简单有效的DEBUG方法,比如Step by Step.虽然目前有很多IDE可以实现本地调试,但是因为后台研发的环境复杂,你很难在一台机器上模拟所有的环境,比如线上的数据库只能在内网访问等等,所以很多

  • js 数组当前行添加数据方法详解

    需求:1.点击新增一栏商品信息,表单验证区分 2.输入SKU编码,带出当前行的产品名称,品牌及单位 解决: 到此这篇关于js 数组当前行添加数据方法详解的文章就介绍到这了,更多相关js 数组当前行添加数据方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • Mac下用Java调用c/c++的思路详解

    目录 前言 调用思路 具体步骤 Java C/C++ 前言 向量化执行逐渐成为了列存数据库优化的热门方向,而Java对向量化执行的支持并不如c++,如果要想使用的话,通过JNI来实现可能更加合适. 调用思路 Java 编写native的java方法并编译为class文件 编译为.h的头文件 C/C++ 使用C/C++实现本地方法 将本地方法生成动态链接库 具体步骤 Java 1.编写native的java方法并编译为class文件 这步是Java初学者都熟悉的,正常编写编译即可 public c

  • Go处理json数据方法详解(Marshal,UnMarshal)

    json数据格式 参见json数据格式说明. 如果没操作过json数据,建议先看下上面的文章,有助于理解本文后面的内容. Go json包 Marshal():Go数据对象 -> json数据UnMarshal():Json数据 -> Go数据对象 func Marshal(v interface{}) ([]byte, error) func Unmarshal(data []byte, v interface{}) error 构建json数据 Marshal()和MarshalInden

随机推荐