Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
mitm-proxy — 基于 Go 的 MITM HTTP/HTTPS 代理,支持 HTTP/2 和 HTTP/1.1 拦截、本地 CA/每主机证书生成、CONNECT/WebSocket 隧道、磁盘缓存、管理仪表板、流量捕获、阻止策略,以及可选的 AI 支持威胁扫描,具有编辑、隔离和审计日志功能。 | Kitploit
工具/GitHubGitHub/welfordian/mitm-proxy
Web代理与拦截API安全测试调试器Web安全渗透测试威胁情报学习与教育AI 安全
GitHubwelfordian/mitm-proxy

mitm-proxy

基于 Go 的 MITM HTTP/HTTPS 代理,支持 HTTP/2 和 HTTP/1.1 拦截、本地 CA/每主机证书生成、CONNECT/WebSocket 隧道、磁盘缓存、管理仪表板、流量捕获、阻止策略,以及可选的 AI 支持威胁扫描,具有编辑、隔离和审计日志功能。

查看仓库
141964个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Go MITM Proxy

MITM 代理管理界面徽标

一个轻量级、开发者友好的中间人(MITM)HTTP/HTTPS 代理,使用 Go 编写。它支持 HTTP/1.1 和 HTTP/2、CONNECT 隧道、WebSocket 隧道(ws/wss)、带有灵活过滤器的磁盘响应缓存以及实时配置重载。

徽章

Go Platform PRs Welcome

管理面板预览

MITM 代理管理面板概览

概述

Go MITM Proxy 是一个拦截代理,用于调试、测试、学习和受控拦截 HTTP(S) 流量。当启用 MITM 时,它会动态生成由本地 CA 签名的每主机叶子证书,从而允许代理解密和检查 HTTPS 流量。当 MITM 禁用或针对排除的域名/端口时,它也可以作为透明 TCP 隧道工作。

声明与负责任使用要求

重要提示: 此应用程序会执行主动的中间人(MITM)拦截,包括生成和使用 TLS 证书来解密 HTTPS 流量。根据您所在的司法管辖区和网络环境,在未获得所有受影响用户明确、事先同意的情况下拦截流量可能属于违法行为,并可能违反隐私、工作场所政策或监管要求。

在使用此软件除您本地机器以外的任何环境之前:

1. 获取明确同意

此代理可能拦截流量的任何网络上的所有用户必须明确告知将会发生 HTTP(S) 拦截和检查。同意应是明确的,并最好有书面记录。

2. 仅在授权网络上使用

请勿在您不拥有、不管理或未获得明确授权进行测试或监控的网络上运行此软件。

3. 遵守隐私和数据保护法律

许多地区对用户数据的拦截、记录和存储有严格的法律规定(例如 GDPR、CCPA、窃听法)。您有责任确保您的使用符合所有适用法规。

4. 保护好生成的 CA 密钥

生成的 CA 私钥(通常为 ca-key.pem)允许持有者冒充信任相应证书的用户中的任何域名。

  • 安全存储。
  • 切勿共享。
  • 如果泄露则轮换/删除。

5. 仅用于测试和调试

此代理设计用于开发、调试、受控测试或教育目的 — 并非用于隐蔽监控或未经授权的监视。


使用此软件即表示您承认并承担全部责任,确保您的使用合法、合乎道德,并已适当告知所有受影响的用户。

特性

  • 通过标准代理语义进行 HTTP 和 HTTPS 代理
  • 使用每主机证书进行 HTTPS 的 MITM 拦截
  • 支持 ALPN 协商的 HTTP/1.1 和 HTTP/2 下游处理
  • WebSocket 隧道:ws:// 和 wss://
  • 灵活的 GET 响应磁盘缓存
    • 按域名和文件扩展名包含/排除
    • 基于 TTL 的过期
    • 响应中的缓存命中指示(Via 和自定义 x-<normalized-proxy-name>-uid 头部)
  • 实时配置重载:可选的 config.json 轮询和热应用更改
  • 本地管理 API/仪表板,支持 Bearer Token 认证、只读令牌、管理员用户角色记录、健康/版本/审计端点、实时流量 SSE 以及 CA 元数据/下载
  • 运行时阻断策略,支持端口、域名和 IP/CIDR 范围
  • 可选的威胁扫描器,支持启发式和 AI 驱动的判定、修订、判定缓存、隔离元数据和仪表板端点
  • 详细和每个请求的日志控制
  • 合理的默认设置,附带可选的 JSON 配置

安装

先决条件:

  • Go 1.25 或更新版本

克隆并构建: ```bash git clone https://github.com/Welfordian/mitm-proxy.git cd mitm-proxy go build ./

这会在项目根目录生成一个 mitm-proxy(在 Windows 上为 mitm-proxy.exe)二进制文件。


## 快速开始

1) 使用默认设置运行代理(监听在 :8080): ```bash
./mitm-proxy

在首次启动时,将创建本地CA并保存到 ca-cert.pem 和 ca-key.pem。

  1. 将您的浏览器或 curl 配置为使用位于 http://localhost:8080 的代理。

  2. 在您的操作系统/浏览器中信任生成的CA证书(ca-cert.pem),以允许HTTPS拦截。请参阅信任本地CA。

  3. 通过代理访问HTTPS站点并观察日志。使用详细模式获取更多信息: ```bash ./mitm-proxy --verbose

## 用法

### 命令行标志

- --config string: 指向 config.json 文件的路径
- --listen string: 监听地址(覆盖配置)
- --ca-cert string: 现有 CA 证书的路径(覆盖配置)
- --ca-key string: 现有 CA 密钥的路径(覆盖配置)
- --mitm bool: 启用 MITM 拦截(默认为 true;设为 false 则强制隧道)
- --verbose bool: 启用详细日志记录
- --watch-config bool: 监视 config.json 文件变化并自动应用(默认为 true)
- --admin-enabled bool: 启用本地管理 API/仪表盘(默认为 true)
- --admin-addr string: 管理 API/仪表盘监听地址(默认 127.0.0.1:9090)
- --admin-token string: 管理 bearer 令牌(若省略则在启动时生成)
- --admin-read-token string: 仅用于 GET/HEAD/OPTIONS 管理访问的只读 bearer 令牌
- --admin-ui bool: 提供内嵌管理 UI(默认为 true)
- --admin-store string: 管理 SQLite 存储路径(默认为 dashboard.db)

CLI 标志在注明时覆盖配置文件的值。

### 配置 (config.json)

仓库中提供了一个示例 config.json 文件: ```json
{
 "listen_addr": ":8080",
 "proxy_name": "MITM-Proxy",
 "ca_cert_path": null,
 "ca_key_path": null,
 "ca_cert_output_path": "ca-cert.pem",
 "ca_key_output_path": "ca-key.pem",
 "enable_mitm": true,
 "admin_enabled": true,
 "admin_addr": "127.0.0.1:9090",
 "admin_token": "",
 "admin_read_token": "",
 "admin_ui": true,
 "admin_store": "dashboard.db",
 "excluded_domains": [],
 "blocked_ports": [25, 445, 3389],
 "blocked_domains": [],
 "blocked_ips": [],
 "block_action": "deny",
 "block_response_status": 403,
 "traffic_capture": {
   "store_bodies": false,
   "max_body_bytes": 32768,
   "redact_bodies": true,
   "store_headers": true,
   "redacted_headers": ["Authorization", "Cookie", "Proxy-Authorization", "Set-Cookie", "X-Api-Key"],
   "store_cookies": true,
   "redacted_cookies": []
 },
 "proxy_auth": {
   "enabled": false,
   "realm": "MITM Proxy",
   "require_auth_for_loopback": false,
   "default_action": "allow"
 },
 "verbose_logging": true,
 "log_requests": true,
 "max_idle_conns": 200,
 "idle_conn_timeout_seconds": 90,
 "tls_handshake_timeout_seconds": 10,
 "min_tls_version": "1.2",
 "tls_next_protos": ["h2", "http/1.1"],
 "cache": {
   "enabled": true,
   "directory": "/var/cache/mitm-proxy",
   "include_domains": [],
   "exclude_domains": [],
   "include_extensions": ["jpg", "png", "webp", "css", "js"],
   "exclude_extensions": [],
   "ttl": 3600
 }
}

注:

  • 若未提供 ca_cert_path 或 ca_key_path,代理会将生成的 CA 写入 ca-cert.pem 和 ca-key.pem。
  • excluded_domains 支持通配符(参见 internal/config 中的 IsDomainExcluded)。
  • admin_addr 默认值为 localhost。如果 admin_token 为空,则在启动时生成并打印一个每次运行不同的令牌。
  • 可设置 admin_read_token 用于只读仪表盘/API 客户端。
  • traffic_capture.store_bodies 默认禁用;启用后,请求体示例将受到大小限制并默认进行脱敏处理。
  • traffic_capture.store_headers 和 traffic_capture.store_cookies 控制是否持久化捕获的元数据。redacted_headers 会脱敏整个标头值,而 redacted_cookies 则在存储前匹配并脱敏单个 Cookie 和 Set-Cookie 名称。
  • proxy_auth 启用基于 SQLite 管理用户和有序 ACL 规则的基本客户端代理身份验证。
  • blocked_domains 支持精确域名和通配符模式(如 *.example.com);blocked_ips 支持单个 IP 和 CIDR 范围。
  • cache.include_domains 与 cache.exclude_domains 互斥,include_extensions 与 exclude_extensions 同理。
  • 观察者仅监视通过 --config 指定的文件或默认的 ./config.json,并通过 Proxy.SetConfig 热应用更改。

管理仪表盘

管理服务器默认在 http://127.0.0.1:9090/admin/ 中提供仪表盘。API 路由需要 Authorization: Bearer <token>;对于本地浏览器使用,/admin/?token=<token> 会将令牌存储到浏览器本地存储中。

初始仪表盘/API 覆盖范围包括:

  • GET /api/health 和 GET /api/version
  • GET /api/audit
  • GET /api/traffic、GET /api/traffic/stats、GET /api/traffic/{id}、GET /api/traffic/stream、DELETE /api/traffic 和 POST /api/traffic/{id}/replay
  • GET /api/traffic/export?format=har 用于 HAR 格式导出
  • GET/POST/PUT/DELETE /api/repeater/cases 和 POST /api/repeater/cases/{id}/send 用于保存的可编辑重放用例
  • GET/POST/PUT/DELETE /api/scopes 以及用于流量和重放用例的作用域分配端点
  • GET/POST/DELETE /api/pentest/maps 以及用于被动目标映射的端点克隆操作
  • GET/POST/PUT/DELETE /api/proxy-auth/users 和 /api/proxy-acl/rules 以及 POST /api/proxy-acl/test 用于代理客户端访问控制
  • POST /api/ai/traffic/{id}/explain、POST /api/ai/traffic/{id}/suggest-tests、POST /api/ai/repeater/cases/{id}/suggest-tests、POST /api/ai/repeater/cases/{id}/compare-runs 和 GET/POST/DELETE /api/ai/notes 用于 AI 研究助手笔记
  • GET /api/certificates/ca、GET /api/certificates/ca/download、POST /api/certificates/ca/rotate、POST /api/certificates/ca/import 和 GET /api/certificates/leaf
  • 针对端口、域名和 IP 的 GET/POST/DELETE 阻止规则
  • GET /api/deployments/current、POST /api/deployments/current/reload、GET /api/logs、GET /api/cache(含缓存条目和命中/未命中计数)、POST /api/cache/purge 和 GET/PUT /api/settings
  • GET /api/threats/events、GET /api/threats/stream、GET /api/threats/config、POST /api/threats/test 及威胁覆盖端点
  • GET /metrics 用于 Prometheus 兼容的进程/管理/威胁计数器

仪表盘包含首次运行时的负责任使用确认。CA 私钥绝不会通过管理 API 暴露。 仪表盘状态默认存储于 SQLite 数据库 dashboard.db 中。通过仪表盘更改的设置会立即生效,并写回已配置的 JSON 文件;若代理从默认设置启动,则写回 config.json。

管理前端是一个位于 internal/admin/ui 的 Vite/React 应用。其生产构建输出到 internal/admin/ui/dist,并嵌入到 Go 二进制文件中。要更新仪表盘资源:```bash cd internal/admin/ui npm install npm run build

### 上游代理链

出站流量可通过上游 HTTP 或 HTTPS 代理进行链式传递,例如 Burp、ZAP 或企业出口代理。启用后,正常的 HTTP(S) 转发、CONNECT 直通隧道、WebSocket 以及 Repeater 发送都将使用此上游代理,除非目标主机匹配 `no_proxy`。```json
{
  "upstream_proxy": {
    "enabled": true,
    "url": "http://127.0.0.1:8080",
    "username": "",
    "password_env": "UPSTREAM_PROXY_PASSWORD",
    "no_proxy": ["localhost", "127.0.0.1", "*.internal"],
    "chain_tunnels": true,
    "apply_to_repeater": true
  }
}

v1 仅支持 http:// 和 https:// 上游代理 URL。如果需要 Basic 认证,请设置 username 并通过命名的环境变量提供密码;嵌入在 URL 中的凭据会被拒绝且永远不会显示在仪表盘设置中。如果启用了上游代理但不可用,受影响的请求会显式失败,而不会静默回退到直连。

代理访问控制

仪表盘的 访问控制 视图管理客户端代理用户和按顺序排列的允许/拒绝 ACL 规则。代理用户存储在 SQLite 中并带有 bcrypt 密码哈希;仅当创建或重置用户时才接受明文密码,且 API 永远不会返回它们。

下载工具