python代理工具mitmproxy使用指南


Posted in Python onJuly 04, 2019

前言

mitmproxy 是 man-in-the-middle proxy 的简称,译为中间人代理工具,可以用来拦截、修改、保存 HTTP/HTTPS 请求。以命令行终端形式呈现,操作上类似于Vim,同时提供了 mitmweb 插件,是类似于 Chrome 浏览器开发者模式的可视化工具。

它是基于Python开发的开源工具,最重要的是它提供了Python API,你完全可以通过Python代码来控制请求和响应,这是其它工具所不能做到的,这点也是我喜欢这个工具的原因之一。

安装

sudo pip3 install mitmproxy

启动

mitmproxy
#或者指定端口
mitmproxy -p 8888

启动 mitmproxy 之后,默认开启8080端口, mitmproxy 命令不支持Windows平台,需要使用 mitmdump 或者 mitmweb 命令代替。Windows系统也可以在官网下载它的EXE文件进行安装。

手机或者浏览器设置好代理之后,就可以进行抓包分析了,打开浏览器访问某个网址,mitmproxy 看到的效果是:

python代理工具mitmproxy使用指南

当前一共有136个请求,当前选择的是第16个请求,请求方法是 GET, 返回的状态码是200,代理的端口是8080,通过 J、K 键可上下切换到不同的请求,回车可以看到当前选中的请求详情,包括三部分,Request和Response还有 Detail

python代理工具mitmproxy使用指南

mitmproxy 快捷键

? 帮助文档 
q 返回/退出程序 
b 保存response body 
f 输入过滤条件
k 上
j 下
h 左
l 右
space 翻页
enter 进入接口详情
z 清屏
e 编辑
r 重新请求

HTTPS 抓包配置

对于HTTPS请求,为了能正常抓到请求,需要先安装证书。没安装证书的请求看到的效果是这样的。

python代理工具mitmproxy使用指南

打开网址http://mitm.it , 选择匹配的平台,下载 HTTPS 证书。并按照对应的步骤进行安装

python代理工具mitmproxy使用指南

mitmweb

$ mitmweb

启动 mitmweb 命令后,会有一个类似Chrome开发者工具的Web页面,功能上类似mitmroxy,一样可以查看每个请求的详情,包括请求、响应,还可以对请求和响应内容进行修改,包括过滤、重新发送请求等常用功能。

python代理工具mitmproxy使用指南

mitmdump

$ mitmdump -s script.py

mitmdump 命令最大的特点就是可以自定义脚本,你可以在脚本中对请求或者响应内容通过编程的方式来控制,实现数据的解析、修改、存储等工作

# script.py
from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
  # 将请求新增了一个查询参数
  flow.request.query["mitmproxy"] = "rocks"

def response(flow: http.HTTPFlow) -> None:
  # 将响应头中新增了一个自定义头字段
  flow.response.headers["newheader"] = "foo"
  print(flow.response.text)

当你在浏览器请求http://httpbin.org/get ,看到的效果:

python代理工具mitmproxy使用指南

你还可以参考这些链接:

  • 官方文档https://docs.mitmproxy.org/stable/
  • GitHub地址https://github.com/mitmproxy/mitmproxy
  • 更多脚本例子https://github.com/mitmproxy/mitmproxy/tree/master/examples/simple

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用matplotlib绘制动画的方法
May 20 Python
python实现比较两段文本不同之处的方法
May 30 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
Aug 03 Python
Python3实现的回文数判断及罗马数字转整数算法示例
Mar 27 Python
python定时按日期备份MySQL数据并压缩
Apr 19 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
Python下应用opencv 实现人脸检测功能
Oct 24 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 Python
详解python爬取弹幕与数据分析
Nov 14 Python
Python批量修改图片分辨率的实例代码
Jul 04 #Python
Django 中自定义 Admin 样式与功能的实现方法
Jul 04 #Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 #Python
python中比较两个列表的实例方法
Jul 04 #Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 #Python
远程部署工具Fabric详解(支持Python3)
Jul 04 #Python
Python之修改图片像素值的方法
Jul 03 #Python
You might like
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
使用正则替换变量
2007/05/05 Javascript
javascript 一个自定义长度的文本自动换行的函数
2007/08/19 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
Python获取文件ssdeep值的方法
2014/10/05 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
python反编译学习之字节码详解
2019/05/19 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
Python上下文管理器全实例详解
2019/11/12 Python
Python的logging模块基本用法
2020/12/24 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
国窖1573广告词
2014/03/21 职场文书
授权委托书怎么写
2014/04/03 职场文书
学生鉴定评语大全
2014/05/05 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
小学运动会入场词
2015/07/18 职场文书