mitmproxy代理

前言

今天来介绍一款特别牛批的抓包工具 mitmproxy,这款工具和charles有着相同点,但是他比charles有着更强大的功能,现在就听我的介绍吧

一.介绍

mitmproxy代理的功能

实时拦截、修改 HTTP/HTTPS 请求和响应
可保存完整的 http 会话,方便后续分析和重放
支持反向代理模式将流量转发到指定服务器
支持用 Python 脚本对 HTTP 通信进行修改【重点】

和charles的区别

mitmproxy 就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。

不同于 charles 抓包工具,mitmproxy 不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发。举例来说,利用 charles 可以过滤出浏览器对某个特定 url 的请求,并查看、分析其数据,但实现不了高度定制化的需求,比如:“截获对浏览器对该 url 的请求,将返回内容置空,并将真实的返回内容存到某个数据库,出现异常时发出邮件通知”。而对于 mitmproxy,这样的需求可以通过载入自定义 python 脚本轻松实现。

 

官网

mitmproxy - an interactive HTTPS proxyicon-default.png?t=N7T8https://mitmproxy.org/ 

二.安装 

方式一:官网下载安装包,安装,一路下一步安装--》安装后安装路径自动加入环境变量
https://mitmproxy.org/
    
方式二:使用pip 安装(我们装在了虚拟环境中)
    pip3 install mitmproxy 

而今天我们主要是看他在python中的作用,所以我们选择pip安装

安装好执行 mitmdump --version

这就是以及安装成功

三.使用 

启动
    -mitmdump   命令窗口启动
    -mitmweb    web页面启动
 

为了页面可观好看,我们一般都是用web页面启动,启动好我们跳到这个页面

 

再把手机wifi的端口改成8080,上面写本机ip地址,就和charles抓包一样,不记得的人可以去看一下我app逆向种讲的charles配置

APP逆向 day3 抓包和反编译_app 抓包 js 编译与反编译-CSDN博客文章浏览阅读1k次,点赞30次,收藏29次。今天我们配置了charles(配置的都知道,就是长得像尿壶的那个)和jadx,这一期就不教大家怎么用了,按照步骤来还是很简单的。_app 抓包 js 编译与反编译https://blog.csdn.net/weixin_74178589/article/details/139964780?spm=1001.2014.3001.5501 配置好了这里就会提示

 这样就可以抓http的包了,现在还需要配置抓取https的包

四.配置证书 

手机端访问 mitm.it下载好帮他放入证书,下载好movecert模块重启就能抓取https的包了,前面我给的链接里有详细讲这些 

 

这就可以抓到https的包了

五.python基本使用

from mitmproxy import http


def request(flow: http.HTTPFlow):
    if 'login/login.ashx' in flow.request.path:
        print(type(flow.request))  # mitmproxy.http.Request
        print(flow.request.path)
        print(flow.request.query)
        print(flow.request.url)
        
        # 修改请求头
        # flow.request.headers['aa']='zz'

        # 使用代理
        # address = (ip, port)
        # print(address)

        flow.server_conn.via = ServerSpec(("http", address))



def response(flow: http.HTTPFlow):
    if 'login/login.ashx' in flow.request.path:
        print(type(flow.response))
        print(flow.response.text)
        print(flow.response.content)
        print(flow.response.json())
        print(flow.response.headers)
        # 修改响应体
        # flow.response.text='''{"returncode":2040007,"message":"错了"}'''



# mitmdump  -s  mitmproxy.py
# mitmdump  -s  mitmproxy.py -q  # 不输出日志

补充 

如果有任何需求主页或者绿泡泡私信我,看我名字,有求必应 

 

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
mitmproxy是一款强大的HTTP代理服务器,可以拦截和修改HTTP请求和响应,可以用于调试和测试HTTP应用程序,也可以用于抓取和分析HTTP流量。以下是mitmproxy的一些常用用法: 1. 启动mitmproxy代理服务器 在命令行中输入以下命令即可启动mitmproxy代理服务器: ``` mitmproxy ``` 默认情况下,mitmproxy会监听本地的8080端口,可以通过设置参数修改监听端口、代理模式和Addon脚本等。 2. 使用Addon拦截和处理HTTP请求和响应 可以使用Addon机制实现对HTTP请求和响应的拦截和处理。可以继承mitmproxy.Addon类,重写其中的方法实现自定义功能,例如对请求和响应进行分析、记录和修改等。 以下是一个自定义的Addon,实现了对HTTP请求和响应的记录和修改: ```python from mitmproxy import http, ctx class MyAddon(http.HTTPAddon): def request(self, flow: http.HTTPFlow) -> None: # 记录HTTP请求 ctx.log.info(f"Request {flow.request.url}") def response(self, flow: http.HTTPFlow) -> None: # 修改HTTP响应 flow.response.content = b"Hello, world!" flow.response.headers["content-type"] = "text/plain" # 记录HTTP响应 ctx.log.info(f"Response {flow.request.url}: {flow.response.status_code}") addons = [ MyAddon() ] # 启动mitmproxy代理服务器 from mitmproxy.tools.main import mitmdump mitmdump(['-p', '8080', '-s', __file__] + sys.argv[1:]) ``` 在这个Addon中,重写了request()和response()方法,对HTTP请求进行记录,在HTTP响应中修改内容和头信息,并对HTTP响应进行记录。可以根据需要对请求和响应进行分析、记录和修改等操作。 3. 使用过滤器筛选HTTP请求和响应 可以使用过滤器对HTTP请求和响应进行筛选,例如根据URL、请求方法、请求头、请求体、响应状态码等条件进行筛选。 以下是一个使用过滤器筛选HTTP请求和响应的例子: ```python def request(flow: http.HTTPFlow) -> None: # 只拦截GET请求和URL以"http://example.com"开头的请求 if flow.request.method == "GET" and flow.request.url.startswith("http://example.com"): # 记录HTTP请求 ctx.log.info(f"Request {flow.request.url}") def response(flow: http.HTTPFlow) -> None: # 只拦截响应状态码为200的响应 if flow.response.status_code == 200: # 记录HTTP响应 ctx.log.info(f"Response {flow.request.url}: {flow.response.status_code}") ``` 在这个例子中,使用了过滤器对HTTP请求和响应进行筛选,只拦截GET请求和URL以"http://example.com"开头的请求,只拦截响应状态码为200的响应。可以根据需要对请求和响应进行筛选和处理。 4. 使用mitmdump命令行工具进行HTTP流量分析 mitmdump是mitmproxy的命令行工具,可以用于HTTP流量分析和交互式修改。以下是一些常用的mitmdump命令: - 显示HTTP请求和响应的信息: ``` mitmdump -p 8080 ``` - 显示HTTP请求和响应的详细信息: ``` mitmdump -p 8080 -v ``` - 显示HTTP请求和响应的简要信息: ``` mitmdump -p 8080 -q ``` - 保存HTTP请求和响应的信息到文件: ``` mitmdump -p 8080 -w output.txt ``` - 将HTTP请求和响应的信息转发到另一个HTTP服务器: ``` mitmdump -p 8080 -U http://example.com ``` - 使用Addon拦截和处理HTTP请求和响应: ``` mitmdump -p 8080 -s myaddon.py ``` 可以根据需要使用mitmdump命令进行HTTP流量分析和交互式修改,也可以结合Addon实现自定义的HTTP流量分析和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往日情怀酿做酒 V1763929638

往日情怀酿作酒 感谢你的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值