📜  mac 和 android 设备上的 mitmproxy - Java (1)

📅  最后修改于: 2023-12-03 15:02:49.700000             🧑  作者: Mango

Mac 和 Android 设备上的 MITMProxy - Java

MITMProxy 是一个流量拦截和修改工具,可以协助开发人员进行软件和网络协议的测试。它可以方便地捕获 HTTPS 流量,并且具有对流量的实时修改能力,从而使得进行数据包调试和分析变得更加容易。

安装 MITMProxy

首先需要安装 Java,下载地址:https://www.java.com/zh_CN/download/

接着,安装 MITMProxy,可以使用 pip 命令快速地安装 MITMProxy:

pip install mitmproxy

如果提示找不到 pip 命令,可以先安装 pip:

sudo easy_install pip
启动 MITMProxy

在终端中输入以下命令来启动 mitmproxy:

mitmproxy

此时你会看到一个控制台界面,显示 HTTP 或 HTTPS 的请求和响应:

mitmproxy example

要退出 MITMProxy,可以按 CTRL+C

设置代理服务器

在 iOS 或 Android 设备上,使用代理服务器来连接 MITMProxy。

在 iOS 设备上
  1. 打开「设置」应用
  2. 进入「无线局域网」一栏
  3. 找到你所连接的 Wi-Fi,点击右边的「i」
  4. 在「HTTP 代理」中选择「手动」
  5. 输入计算机的 IP 地址和 mitmproxy 的监听端口(默认为 8080)
  6. Safari 浏览器中访问 http://mitm.it 下载安装证书
  7. 重启设备
在 Android 设备上
  1. 打开「设置」应用
  2. 进入「Wi-Fi」一栏
  3. 长按所连接的 Wi-Fi,选择「修改网络」
  4. 在「代理」中选择「手动」,填入计算机的 IP 地址和 mitmproxy 的监听端口(默认为 8080)
  5. Chrome 浏览器中访问 http://mitm.it 下载安装证书
  6. 重启设备
编写脚本

MITMProxy 提供了 Python 的 API,编写脚本可以更方便地实现复杂的流量分析和修改功能。

from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
    # 修改请求 URL
    flow.request.url = "https://www.example.com"
    
    # 修改请求头部信息
    flow.request.headers["User-Agent"] = "Chrome"
    
    # 修改请求正文
    flow.request.content = "Hello, world!"

def response(flow: http.HTTPFlow) -> None:
    # 修改响应状态码
    flow.response.status_code = 404
    
    # 修改响应头部信息
    flow.response.headers["Content-Type"] = "text/html"
    
    # 修改响应正文
    flow.response.content = "<html><body><h1>Not Found</h1></body></html>"
结语

MITMProxy 是一个强大的工具,可以协助开发人员进行网络协议的测试。在 Mac 和 Android 设备上使用 MITMProxy 可以快速地捕获和修改流量。通过编写 Python 脚本,可以实现更加复杂的流量分析和修改功能。