前言
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 看到的效果是:
当前一共有136个请求,当前选择的是第16个请求,请求方法是 GET, 返回的状态码是200,代理的端口是8080,通过 J、K 键可上下切换到不同的请求,回车可以看到当前选中的请求详情,包括三部分,Request和Response还有 Detail
mitmproxy 快捷键
? 帮助文档 q 返回/退出程序 b 保存response body f 输入过滤条件 k 上 j 下 h 左 l 右 space 翻页 enter 进入接口详情 z 清屏 e 编辑 r 重新请求
HTTPS 抓包配置
对于HTTPS请求,为了能正常抓到请求,需要先安装证书。没安装证书的请求看到的效果是这样的。
打开网址http://mitm.it , 选择匹配的平台,下载 HTTPS 证书。并按照对应的步骤进行安装
mitmweb
$ mitmweb
启动 mitmweb 命令后,会有一个类似Chrome开发者工具的Web页面,功能上类似mitmroxy,一样可以查看每个请求的详情,包括请求、响应,还可以对请求和响应内容进行修改,包括过滤、重新发送请求等常用功能。
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 ,看到的效果:
你还可以参考这些链接:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍源代码快速定位工具-qwandry使用指南,包括了源代码快速定位工具-qwandry使用指南的使用技巧和注意事项,需要的朋友参考一下 GitHub地址:https://github.com/adamsanderson/qwandry qwandry 能快速定位到我们需要找到 库文件, 项目 的工具。 Ruby中实现快速定位的方法有好多种,我知道的有三个: 通过tag方法(tag 定位
SkylarkOS 厂测工具设计设备端和PC界面端两部分,PC端和界面端通讯可以通过USB和串口通信,使用USB通信是使用ADB方式 一、设备端程序 设备源码位置:middleware/factory_tools 编译指南: 在openwrt的编译配置下,选择上gx_factory和gx_panel_service编译出来的可执行程序是:factory 手动测试指令: example: factr
一、工具使用 在linux文件系统下,已经带了默认的录音调试工具:vspdump 直接在shell里输入 vspdump 就可以执行了 帮助查看: root@ubuntu: vspdump -h 麦克风原始音录制: 为了避免录制干扰,先关闭应用里默认的程序 root@ubuntu: killall senseflow 然后录制原始的麦克风声音和参考音: root@ubuntu: vspdump -
mitmproxy是一个支持HHTP/HTTPS协议的抓包程序,类似Fiddler、Charles的功能,只不过世它通过控制台的形式操作。 mitmproxy还有两个关联组件: mitmdump:它是mitmproxy的命令行接口,利用它我们可以对接Python脚本,用Python实现监听后的处理。 mitmweb: 它是一个Web程序,通过它我们可以清楚观察mimproxy捕获的请求。 mitm
本文向大家介绍python pyenv多版本管理工具的使用,包括了python pyenv多版本管理工具的使用的使用技巧和注意事项,需要的朋友参考一下 项目地址github pyenv does... 改变每个用户系统级别的 python 版本 为每个项目提供不同的 python 版本 安装 克隆到本地即为安装,默认目录是 ~/.pyenv ,可以通过 $HOME/.pyenv 改变安装位置。 c
使用 使用JDK的动态代理实现切面 我们定义一个接口: public interface Animal{ void eat(); } 定义一个实现类: public class Cat implements Animal{ @Override public void eat() { Console.log("猫吃鱼"); } } 我们使用Ti