返回

ArchLinux 下使用 mitmproxy

使用 Mitmproxy 进行 HTTP 抓包

残稿

起因

我的手机用的是 PixelExperience ROM,某一天突然收到了更新提示,要是国内系统倒也没那么多事,但是噩梦才刚刚开始,直接在系统设置里面下载显示网络错误(毕竟网站在国外),挂了代理(还是 TProxy 透明代理网关)下载只有 100KB/s,打开了官方网站使用 ADM 下载总是给我重定向到下载页面陷入无限循环,用 Google Chrome 下载也只有 100KB/s,于是突发奇想想用抓包工具揪出最终地址,虽然手机上有抓包软件但是觉得没有电脑操作舒服,而且日后也肯定会用到电脑抓包软件,然后找了找一些老牌工具,但是 Charles 收费,界面难看,字体没有抗锯齿,Fiddler 老版本只有 Windows 版本,新版本收费,最后找到了 mitmproxy - 一个免费开源的交互式 HTTPS 代理。简称:中间人。

官方网站

安装

sudo pacman -S mitmproxy

使用

三种命令对应三种使用方式:

  • mitmproxy - CLI 界面
  • mitmweb - Web 界面
  • mitmdump - CLI 纯输出,不带交互

工作模式

mitmproxy 具有五种工作模式(其实算是是四种,HTTP 代理和 Socks 代理能并为一种:常规代理)

官方推荐的选择流程:

代理模式选择
代理模式选择

抓取来自客户端的流量
还是去往服务器的流量 --- 去往服务器 ---> 反向代理
       |
    来自客户端
       |
是否能够对客户端配置 --- 不能 ---> 透明代理
       |
       能
       |
 是否需要前置代理 --- 需要 ---> 上游代理
       |
     不需要
       |
    常规代理

常规代理

HTTP 代理: mitmproxy
Socks 代理: mitmdump --mode socks5

常规代理
常规代理

透明代理

透明代理可以在不配置客户端代理的情况下实现抓包,但是需要客户端连接到 mitmproxy 网关

mitmdump --mode transparent

透明代理1
透明代理1

如果你的网络中有 NAT 网关(常见于家庭网络):

透明代理2
透明代理2

如果你对网关具有控制权:

透明代理3
透明代理3

但请注意,请不要将 mitmproxy 放在 NAT 前,否则会使 mitmproxy 无法确定真正的目的地址:

透明代理
透明代理

反向代理

mitmdump --mode reverse:https://example.com

通常用于调试服务器 API

反向代理
反向代理

上游代理

mitmdump --mode upstream:http://example.com:8081

上游代理
上游代理

抓取 HTTPS

需要在客户端安装证书

在被代理后打开 http://mitm.it 下载对应证书后安装

参考链接

Licensed under CC BY-NC-SA 4.0
最后更新于 Aug 23, 2021 20:22 +0800
Built with Hugo
Theme Stack designed by Jimmy