
MITM-прокси для HTTP/HTTPS на Go с перехватом HTTP/2 и HTTP/1.1, генерацией локального CA и сертификатов для каждого хоста, туннелированием CONNECT/WebSocket, кэшированием на диск, административной панелью, захватом трафика, политиками блокировки и опциональным сканированием угроз на базе ИИ с маскированием данных, карантином и журналированием аудита.
Легковесный, удобный для разработчиков HTTP/HTTPS-прокси Man‑in‑the‑Middle (MITM), написанный на Go. Он поддерживает HTTP/1.1 и HTTP/2, CONNECT-туннелирование, туннелирование WebSocket (ws/wss), кэширование ответов на диске с гибкими фильтрами и горячую перезагрузку конфигурации.

Go MITM Proxy — это перехватывающий прокси, предназначенный для отладки, тестирования, обучения и контролируемого перехвата HTTP(S)-трафика. Когда MITM включен, он динамически генерирует конечные сертификаты для каждого хоста, подписанные локальным CA, что позволяет прокси расшифровывать и проверять HTTPS-трафик. Он также может работать как прозрачный TCP-туннель, когда MITM отключен или для исключенных доменов/портов.
Важно: Это приложение выполняет активный перехват Man‑in‑the‑Middle (MITM), включая генерацию и использование TLS-сертификатов для расшифровки HTTPS-трафика. В зависимости от вашей юрисдикции и сетевого окружения перехват трафика без явного предварительного согласия всех затронутых пользователей может быть незаконным и может нарушать конфиденциальность, политику рабочего места или нормативные требования.
Перед использованием этого программного обеспечения в любой среде, кроме вашего собственного локального компьютера:
Все пользователи любой сети, в которой этот прокси может перехватывать трафик, должны быть четко проинформированы о том, что будет выполняться перехват и проверка HTTP(S). Согласие должно быть явным и в идеале задокументированным.
Не запускайте это программное обеспечение в сетях, которыми вы не владеете, которые не администрируете или на тестирование/мониторинг которых не имеете явного разрешения.
Во многих регионах действуют строгие законы, регулирующие перехват, регистрацию и хранение пользовательских данных (например, GDPR, CCPA, законы о прослушивании). Вы несете ответственность за то, чтобы ваше использование соответствовало всем применимым нормативным требованиям.
Сгенерированный закрытый ключ CA (обычно ca-key.pem) позволяет его владельцу выдавать себя за любой домен для пользователей, доверяющих соответствующему сертификату.
Этот прокси предназначен для разработки, отладки, контролируемого тестирования или образовательных целей — а не для скрытого мониторинга или несанкционированного наблюдения.
Используя это программное обеспечение, вы подтверждаете и принимаете полную ответственность за то, чтобы ваше использование было законным, этичным и надлежащим образом доведено до сведения всех затронутых пользователей.
Предварительные требования:
Клонирование и сборка: ```bash git clone https://github.com/Welfordian/mitm-proxy.git cd mitm-proxy go build ./
Это создаёт бинарный файл mitm-proxy (или mitm-proxy.exe в Windows) в корне проекта.
## Быстрый старт
1) Запустите прокси с настройками по умолчанию (слушает на :8080): ```bash
./mitm-proxy
При первом запуске будет создан локальный ЦС и сохранён в ca-cert.pem и ca-key.pem.
Настройте ваш браузер или curl на использование прокси по адресу http://localhost:8080.
Доверьте сгенерированному сертификату ЦС (ca-cert.pem) в вашей ОС/браузере, чтобы разрешить перехват HTTPS. См. раздел «Доверие локальному ЦС».
Посетите HTTPS-сайт через прокси и посмотрите логи. Используйте подробный режим для получения дополнительных сведений: ```bash ./mitm-proxy --verbose
## Использование
### Параметры командной строки
- --config string: Путь к файлу config.json
- --listen string: Адрес прослушивания (переопределяет config)
- --ca-cert string: Путь к существующему сертификату CA (переопределяет config)
- --ca-key string: Путь к существующему ключу CA (переопределяет config)
- --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: Bearer-токен только для чтения для административного доступа через GET/HEAD/OPTIONS
- --admin-ui bool: Обслуживать встроенный административный веб-интерфейс (по умолчанию true)
- --admin-store string: Путь к SQLite-хранилищу админ-панели (по умолчанию dashboard.db)
Параметры CLI переопределяют значения файла конфигурации там, где это указано.
### Конфигурация (config.json)