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加密自己的密码
Aug 04 Python
分享6个隐藏的python功能
Dec 07 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
pandas数据分组和聚合操作方法
Apr 11 Python
python创造虚拟环境方法总结
Mar 04 Python
django 中的聚合函数,分组函数,F 查询,Q查询
Jul 25 Python
python3中eval函数用法使用简介
Aug 02 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
wxPython实现文本框基础组件
Nov 18 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
django model object序列化实例
Mar 13 Python
PyQt5实现登录页面
May 30 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
php格式化工具Beautify PHP小小BUG
2008/04/24 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
PHP 八种基本的数据类型小结
2011/06/01 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
Ajax基础知识详解
2017/02/17 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
JavaScript 异步调用
2017/10/25 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
详解python 中in 的 用法
2019/12/12 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
服装设计行业个人的自我评价
2013/12/20 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
Python中else的三种使用场景
2021/06/16 Python
分享几种python 变量合并方法
2022/03/20 Python
python解析照片拍摄时间进行图片整理
2022/07/23 Python