python代理工具mitmproxy使用指南

作者:FOOFISH-PYTHON之禅 时间:2021-06-17 14:15:31 

前言

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

来源:https://foofish.net/mitmproxy-toturial.html

标签:python,代理,工具,mitmproxy
0
投稿

猜你喜欢

  • python实现QQ定时发送新年祝福信息

    2023-12-19 08:11:59
  • python监控nginx端口和进程状态

    2023-08-25 16:15:13
  • Python数据处理numpy.median的实例讲解

    2022-07-24 06:36:04
  • 巧用特殊的空格字符

    2009-04-10 18:32:00
  • python颜色随机生成器的实例代码

    2022-12-03 19:40:05
  • python实现凯撒密码加密解密的示例代码

    2021-12-08 07:29:07
  • Python爬虫辅助利器PyQuery模块的安装使用攻略

    2023-10-18 02:19:34
  • Python XML RPC服务器端和客户端实例

    2022-07-26 05:41:57
  • python 读取txt中每行数据,并且保存到excel中的实例

    2022-06-14 02:28:09
  • 数字人组件反写[asp组件开发实例4]

    2009-06-09 13:20:00
  • pandas删除指定行详解

    2021-09-21 10:08:37
  • 一篇文章带你学习python的函数与类

    2023-10-15 05:04:18
  • pycharm设置注释颜色的方法

    2022-01-22 21:47:46
  • 基于Python实现网页文章转PDF文档

    2022-08-23 08:50:17
  • python之PyAutoGui教你做个自动脚本计算器的方法

    2022-01-08 15:24:55
  • 浅谈Python2.6和Python3.0中八进制数字表示的区别

    2023-04-22 23:56:42
  • 编写Python脚本来实现最简单的FTP下载的教程

    2022-11-12 01:25:45
  • ASP提高数据显示效率-缓存探幽

    2007-09-28 12:37:00
  • JS重载实现方法分析

    2023-10-07 08:09:04
  • 显示ASP页面源码的代码

    2008-10-12 13:05:00
  • asp之家 网络编程 m.aspxhome.com