Вышла новая версия mitmproxy 12 с интерактивными Contentviews! Теперь можно редактировать красиво отображаемые бинарные протоколы прямо в интерфейсе, а программа сама преобразует изменения обратно в исходный бинарный формат.
Еще по теме: Как установить и использовать Mitmproxy
Интерактивные Contentviews
С самого начала, в 2011 году, mitmproxy умел красиво отображать содержимое HTTP-сообщений. Позже, в 2015-м, эта функция стала доступна и в консоли, и в веб-интерфейсе, а чуть позже появились пользовательские кастомные представления. Раньше все это было только для чтения — редактировать бинарные протоколы можно было только напрямую, изменяя сырые байты.
Изменение gRPC-сообщения на лету.С новым интерактивным режимом Contentviews можно менять человекочитаемую, «красивую» версию данных, и mitmproxy автоматически преобразует их обратно в бинарный формат. Это особенно удобно для экспериментов с неизвестными протоколами вроде gRPC/Protobuf или MsgPack.
Пример: gRPC и Protobuf
Особенно выиграли gRPC и Protobuf. Теперь можно редактировать Protobuf-сообщения прямо в mitmproxy:
- Известные Protobuf: укажите путь к .proto файлу через опцию protobuf_definitions и редактируйте поля по именам.
- Неизвестные Protobuf: имен полей нет, но можно менять примитивные значения (строки, числа, вложенные сообщения), а mitmproxy автоматически перекодирует изменения.
Новый Contentview API
В основе интерактивности лежит переработанный и упрощённый Contentview API. Теперь метод prettify просто принимает байты и возвращает строку, а reencode делает обратное.
Пример простого интерактивного Contentview, который отображает данные в HEX:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from mitmproxy import contentviews class Hex(contentviews.InteractiveContentview): def prettify( self, data: bytes, metadata: contentviews.Metadata ) -> str: return data.hex() def reencode( self, prettified: str, metadata: contentviews.Metadata ) -> bytes: return bytes.fromhex(prettified) contentviews.add(Hex) |
Добавить его в mitmproxy просто: mitmproxy -s example.py.
Contentviews на Rust
С новым API стало проще писать Contentviews на Rust. Это позволяет создавать безопасные и производительные представления, используя возможности экосистемы Rust и Serde. Новые Contentviews для gRPC, Protobuf и MsgPack написаны именно на Rust.
Другие улучшения mitmproxy 12
-
Добавлена возможность множественного выбора потоков в mitmweb с помощью Ctrl+Click и Shift+Click. Теперь можно удалять, дублировать, помечать, откатывать, воспроизводить, возобновлять и прерывать несколько потоков одновременно.
-
Добавлена функция сохранения стримингового тела запросов и ответов для последующего анализа.
-
Поддержка TLS 1.3 Post Handshake Authentication для безопасного обмена после установления соединения.
-
В документации появилась полноценная функция поиска, чтобы быстрее находить нужные команды и инструкции.
-
Новый визуальный стиль для docs.mitmproxy.org, удобный для долгого чтения документации по безопасности.
-
Добавлены записи CRL в тестовые сертификаты, если у исходного сертификата есть отозванные записи, повышая точность тестирования TLS.
-
Исправлена ошибка, из-за которой mitmproxy некорректно отправлял пустые фреймы HTTP/2.
-
Улучшена команда установки через Homebrew для пользователей Brewfile.
-
Исправлена преждевременная остановка mitmdump в режиме серверного воспроизведения потоков.
-
Исправлен баг, когда при получении сообщения окно WebSocket Messages прыгало вверх.
-
Добавлен просмотр содержимого для Socket.IO поверх WebSocket.
-
Ошибки HTTP_1_1_REQUIRED теперь корректно передаются в потоках HTTP/2.
-
Исправлен сбой при экспорте HAR для некорректных потоков.
-
Исправлен сбой mitmweb при просмотре потоков с неопределёнными заголовками.
-
Исправлен баг, из-за которого mitmproxy по умолчанию не слушал IPv4 и IPv6 в WireGuard-режиме.
-
Подкорректировано расположение всплывающих подсказок в браузерах с поддержкой anchor-позиционирования (Chrome, Edge).
-
Исправлен сбой mitmweb при поиске или подсветке с помощью ~h, ~hq или ~hs.
-
mitmproxy.dns.Message переименован в mitmproxy.dns.DNSMessage.
mitmproxy продолжает развиваться как мощный инструмент для разработчиков, тестировщиков и специалистов по безопасности. Версия 12 делает работу с бинарными протоколами заметно удобнее. Скачать свежую версию можно на официальном сайте mitmproxy.org.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Альтернатива и аналоги Burp Suite
- Проксирование и перехват трафика приложений macOS
- Локальный перехват трафика на Linux, Windows и macOS используя Mitmproxy


