在windows机器上,经常用的最多的是fiddler工具,很强大,图形化界面,使用方便、简单;在mac上,Charles 类似fiddler工具,同样是易于操作的图形化界面,同样都是通过代理的方式实现抓包功能,可通过工具分析http(s)包、修改resquest、response内容,满足日常需求
   而笔者不想每次打开fiddler、手动去修改request或者response,希望通过脚本定制化实现篡改。首选mitmproxy , mitmproxy顾名思义中间人代理【man-in-the-middle proxy】,和fiddler、Charles等工具类似,通过代理方式实现对http(s)的拦截

环境
  1.Python3.6及以上 (python -V查看版本)
   2.更新pip(避免部分依赖包未下载)
   3.安装mitmproxy
     pip install mitmproxy #安装依赖包的同时也将环境安装

介绍
引用原文:
The mitmproxy project’s tools are a set of front-ends that expose common underlying functionality.
   mitmproxy is an interactive man-in-the-middle proxy for HTTP and HTTPS with a console interface.
   mitmdump is the command-line version of mitmproxy. Think tcpdump for HTTP.
   mitmweb is a web-based interface for mitmproxy.
也就是说:
mitmproxy工程工具包,主要包含了3个组件
   mitmproxy:拦截的http(s)记录控制台显示 【window不支持】
   mitmdump:命令行接口,可以对接python脚本,通过脚本实现监听后的处理,可定制个人需求
   mitmweb:web形式展示

特性
   - Intercept HTTP & HTTPS requests and responses and modify them on the fly
   - Save complete HTTP conversations for later replay and analysis
   - Replay the client-side of an HTTP conversations
   - Replay HTTP responses of a previously recorded server
   - Reverse proxy mode to forward traffic to a specified server
   - Transparent proxy mode on OSX and Linux
   - Make scripted changes to HTTP traffic using Python
   - SSL/TLS certificates for interception are generated on the fly
   - And much, much more…

使用
配置代理
   - 手机和电脑同处一个局域网,配置手机代理设置,与其他代理工具的配置方式一致
   - 访问mitm.it 网址,直接下载、安装、信任CA证书(https协议需要)

使用mitmproxy【window不可用,linux、mac可使用,笔者使用linux系统】
   - 启动mitmproxy,默认8080,可指定端口
   mitmproxy -p 8888

   - 控制台快捷命令说明

按键 说明
q 退出(相当于返回键,可一级一级返回)
d 删除当前(黄色双箭头)指向的链接
D 恢复刚才删除的请求
G 跳到最新一个请求
g 跳到第一个请求
C 清空控制台(C是大写)
i 可输入需要拦截的文件或者域名(起到过滤作用)
a 放行请求
A 放行所有请求
? 查看界面帮助信息
^ v 上下箭头移动光标
enter 查看光标所在列的内容
tab 分别查看 Request 和 Response 的详细信息
/ 搜索body里的内容
esc 退出编辑
e 进入编辑模式
结语
   这里仅仅介绍了环境搭建及mitmproxy的使用,其实很类似fiddler,甚至没有fiddler直观,不过用习惯了命令也是操作比较简单的,但是我的目的不在于此,我的目的是通过脚本的方式定制化篡改http(s)的request或者response,下一章继续mitmdump
【官网】https://docs.mitmproxy.org/stable/tools-mitmproxy/

作者:小蜗牛的成长
链接:https://www.jianshu.com/p/749a6b766884
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

初步认识mitmproxy(一)的更多相关文章

  1. 移动端之Android开发的几种方式的初步体验

    目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...

  2. CSharpGL(29)初步封装Texture和Framebuffer

    +BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...

  3. Android自定义View初步

    经过上一篇的介绍,大家对于自定义View一定有了一定的认识,接下来我们就以实现一个图片下显示文字的自定义View来练习一下.废话不多说,下面进入我们的正题,首先看一下我们的思路,1.我们需要通过在va ...

  4. 初步认识Node 之Node为何物

    很多人即便是在使用了Node之后也不知道它到底是什么,阅读完本文你应该会有一个初步的.具体的概念了.    Node的目标 提供一种简单的构建可伸缩网络程序的方法.那么,什么是可伸缩网络程序呢?可伸缩 ...

  5. [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)

    [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date  周六 10 一月 2015 By 钟谢伟 Category website develop ...

  6. 基于C/S架构的3D对战网络游戏C++框架 _05搭建系统开发环境与Boost智能指针、内存池初步了解

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  7. Azure底层架构的初步分析

    之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...

  8. CozyRSS开发记录14-RSS源管理初步完工

    CozyRSS开发记录14-RSS源管理初步完工 1.添加源的响应 DialogHost.Show有几个版本的重载,加一个DialogClosingEventHandler参数.我们让添加源对话框的添 ...

  9. 初步了解CPU

    了解CPU By JackKing_defier 首先说明一下,本文内容主要是简单说明CPU的大致原理,所需要的前提知识我会提出,但是由于篇幅我不会再详细讲解需要的其他基础知识.默认学过工科基础课. ...

随机推荐

  1. 第二个spring冲刺第8天

    今天我们团队分别安排了不同的任务,分别是1人程序编写,1人检查bug,1人负责客户体验,还有我们的总负责人王俊凯同学负责各个部分的协调.今天程序有了新的调整,但是功能还是没有完全做出来,不过还在开发途 ...

  2. 读C#程序最小公倍数答案就是:2123581660200

    阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间 ...

  3. ElasticSearch 2 (38) - 信息聚合系列之结束与思考

    ElasticSearch 2 (38) - 信息聚合系列之结束与思考 摘要 版本 elasticsearch版本: elasticsearch-2.x 内容 本小节涵盖了许多基本理论以及很多深入的技 ...

  4. 改善C++ 程序的150个建议学习之建议7:时刻提防内存溢出

    作为一个程序员,对内存溢出问题肯定不陌生,它已经是软件开发历史上存在了近40年的大难题.在内存空间中,当要表示的数据超出了计算机为该数据分配的空 间范围时,就产生了溢出,而溢出的多余数据则可以作为指令 ...

  5. ionic npm安装报错 no such file ,解决办法

    Install the latest version of NodeJS from their website (e.g. 6.X.X). Open the Node.js command promp ...

  6. 00405EB0 mov eax,dword ptr [ecx] 是什么意思?

    dword 双字 就是四个字节ptr pointer缩写 即指针[]里的数据是一个地址值,这个地址指向一个双字型数据比如mov eax, dword ptr [12345678] 把内存地址12345 ...

  7. 【大数据】SparkStreaming学习笔记

    第1章 Spark Streaming概述 1.1 Spark Streaming是什么 Spark Streaming用于流式数据的处理.Spark Streaming支持的数据输入源很多,例如:K ...

  8. Java之Set的使用场景

    2.Set使用场景 API介绍: java.util.Set接口和java.util.List接口一样,同样继承自Collection接口, 它与Collection接口中的方法基本一致,并没有对Co ...

  9. SSM 中 BaseController 使用 session

    转载: http://blog.sina.com.cn/s/blog_7085382f0102v9jg.html public class BaseController { //region Http ...

  10. Single VIP LLB and SLB config

    Single VIP LLB and SLB config >>>>>>>>>>>>>>>>>&g ...