当前位置: 首页 > java >正文

mitmproxy的使用初试

mitmproxy 是一款开源的交互式 HTTP/HTTPS 代理工具集,专为流量拦截、调试和修改而设计。

安装

软件安装

Python 3.7+(推荐3.8+)

pip install mitmproxy

安装完毕后,分别有3个命令可以用:

  • mitmproxy(终端交互界面)
  • mitmweb(Web可视化界面)
  • mitmdump(命令行工具)

每一个命令都是可以独立运行。

安装证书

启动,运行命令:

mitmproxy

mitmproxy启动后默认的监听端口为:8080。

设置系统的代理:

然后用浏览器访问:http://mitm.it/,我现在用的windows,所以下载的win的证书。

这个地址如果没设置代理,会无法访问。

证书安装完,就可以关掉mitmproxy了。

使用mitmdump获取响应并转发到指定的url

要转发数据到指定url,必须写个python的脚本来实现:dump.py

from mitmproxy import http
import requests
import jsonprint("脚本已加载!")
TARGET_URL = "http://127.0.0.1:6548/input.php"# 创建不使用代理的requests会话
session = requests.Session()
session.trust_env = False  # 不使用系统代理def request(flow: http.HTTPFlow):print(f"拦截到请求: {flow.request.url}")flow.request.headers["X-Test"] = "modified"def response(flow: http.HTTPFlow):print(f"拦截到响应: {flow.request.url}")try:# 获取响应内容response_data = {"url": flow.request.url,"status_code": flow.response.status_code,"headers": dict(flow.response.headers),"content": flow.response.content.decode("utf-8")}# 发送到目标URLsession.post(TARGET_URL,json=response_data,headers={"Content-Type": "application/json"})print(f"Successfully forwarded response from {flow.request.url}")except Exception as e:print(f"Error forwarding response: {str(e)}")

写的python脚本转发url时要注意一点,要禁止使用系统代理,否则会在请求拦截上进入死循环。

通过url转发数据,后续的处理就可以使用任意语言了。例如我这里使用的PHP:

input.php

<?php$input = file_get_contents('php://input');file_put_contents('input.txt', $input . PHP_EOL . '-----------------------' . PHP_EOL, FILE_APPEND);
echo 'done', PHP_EOL;

 正式运行

mitmdump -s dump.py

mitmdump的默认端口也是8080,把系统代理配置好,然后访问:https://httpbin.org/get

看下是否有内容保存了

http://www.xdnf.cn/news/19153.html

相关文章:

  • windows中Qwen3‑Coder 与 Claude Code 搭配使用
  • 《UE5_C++多人TPS完整教程》学习笔记45 ——《P46 待机与跳跃动画(Idle And Jumps)》
  • 【完整源码+数据集+部署教程】植物病害检测系统源码和数据集:改进yolo11-EMSCP
  • Lombok vs Java Record:谁才是未来?
  • week5-[二维数组]翻转
  • Node.js 的流(Stream)是什么?有哪些类型?
  • DBeaver 的 PostgreSQL 驱动包默认存储位置
  • 计算机网络知识--对称加密、非对称加密和数字证书详解
  • “上门做饭”平台的核心技术栈与运营壁垒是什么?
  • OpenCV之霍夫变换
  • Linux系统部署:Certbot 实现 Nginx 自动续期部署 Let‘s Encrypt 免费 SSL 证书
  • css三角形
  • 万字解析RAG(检索增强生成)系统的构建与优化,从基础架构逐步深入到高级技术
  • 深度学习入门Day10:深度强化学习原理与实战全解析
  • 虚拟机快照对内存与磁盘空间的影响
  • Git 合并冲突
  • C++ 编译和运行 LibCurl 动态库和静态库
  • 32.String str=aaa与 String str=new String(aaa)一样吗?new String(“aaa”);创建了几个字符串对象
  • Linux按键驱动开发
  • 明远智睿 RK3568 核心板:以硬核性能解锁多领域应用新可能
  • 手写一个Spring框架
  • 【活动回顾】“智驱未来,智领安全” AI+汽车质量与安全论坛
  • Labview邪修01:贪吃蛇
  • 数据结构:归并排序 (Iterative Merge Sort)
  • 非支配排序遗传算法进化多目标优化算法
  • 【混合开发】Android+webview模拟crash崩溃补充说明
  • 【LeetCode每日一题】141. 环形链表 142.环形链表 II
  • Rspack
  • Kafka入门指南:从安装到集群部署
  • Mock 在 API 研发中的痛点、价值与进化及Apipost解决方案最佳实践