初步认识mitmproxy(一)

    xiaoxiao2025-05-30  92

    在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

    最新回复(0)