
mitmproxy — це інтерактивний proxy-інструмент для аналізу HTTP/HTTPS-трафіку.
Його використовують для налагодження API, тестування вебзастосунків, аналізу запитів і відповідей,
а також у дозволених pentest-сценаріях.
Важливо: використовуйте mitmproxy тільки у власній мережі, лабораторному середовищі
або в межах аудиту, на який є дозвіл. Перехоплення чужого трафіку без дозволу може бути незаконним.
У сучасному mitmproxy основними інструментами є:
tcpdump для HTTP/HTTPS.У старих матеріалах також можна зустріти згадки про pathoc і pathod.
Це були старі допоміжні інструменти для створення нестандартних HTTP-запитів і серверних відповідей.
У 2026 році для практичної роботи з mitmproxy краще орієнтуватися на mitmproxy,
mitmdump і mitmweb.
У Kali Linux mitmproxy можна встановити з репозиторію:
sudo apt update
sudo apt install mitmproxy
Перевірка версії:
mitmproxy --version
mitmdump --version
mitmweb --version
У Kali Linux mitmproxy доступний як пакет, але якщо потрібна найсвіжіша версія,
краще перевірити офіційну документацію mitmproxy та standalone binaries.
Пакети в репозиторіях Debian/Kali можуть відставати від актуального релізу.
У BlackArch mitmproxy також доступний у репозиторіях. Якщо пакет не встановлений:
sudo pacman -S mitmproxy
Найпростіший варіант — запустити mitmproxy як звичайний HTTP/HTTPS proxy на порту 8080:
mitmproxy
Або явно вказати порт:
mitmproxy --listen-port 8080
Для вебінтерфейсу:
mitmweb --listen-port 8080
Для CLI-режиму без інтерактивного інтерфейсу:
mitmdump --listen-port 8080
Після запуску потрібно вказати IP-адресу машини з Kali Linux і порт 8080
у proxy-налаштуваннях тестового пристрою або браузера.
Спочатку перевіряємо IP-адресу машини, на якій запущений mitmproxy.
ip addr
Старий варіант:
ifconfig

У старих прикладах часто використовується інтерфейс eth0.
Якщо у вас Wi-Fi — це може бути wlan0 або, у сучасних Linux-системах,
щось на кшталт wlp2s0. Для дротового підключення це може бути
eth0, enp0s3, ens33 тощо.
Приклад:
eth0 -> inet 192.168.1.131/24
Тут 192.168.1.131 — IP-адреса машини, а /24 відповідає масці
255.255.255.0. Таблицю масок можна подивитися тут:
networkcenter.info/inform/netmask.
Для аналізу HTTPS-трафіку потрібно встановити CA-сертифікат mitmproxy на тестовий пристрій.
Запустіть mitmproxy, налаштуйте proxy на тестовому пристрої, а потім відкрийте:
http://mitm.it
На цій сторінці можна завантажити сертифікат для Android, iOS, Windows, macOS або Linux.
Примітка: якщо застосунок використовує certificate pinning,
HTTPS-трафік може не розшифровуватись навіть після встановлення сертифіката.
Це нормальна поведінка сучасних захищених застосунків.
Transparent mode використовується тоді, коли неможливо або незручно вручну вказати proxy
на клієнтському пристрої. У цьому режимі Linux-машина з mitmproxy виступає як маршрутизатор,
а трафік перенаправляється firewall-правилами.
Рекомендація на 2026 рік: якщо можна вручну вказати proxy —
використовуйте звичайний proxy mode. Transparent mode складніший у налаштуванні.
Для нових сценаріїв також варто дивитися в бік WireGuard mode або local capture mode.
Увімкніть IP forwarding, оскільки система буде працювати як маршрутизатор:
sudo sysctl -w net.ipv4.ip_forward=1
Старий варіант:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Також бажано вимкнути ICMP redirects:
sudo sysctl -w net.ipv4.conf.all.send_redirects=0
У старій статті використовувався порт 2139. Це нормально:
mitmproxy може слухати будь-який вільний порт.
Замініть eth0 на ваш реальний мережевий інтерфейс.
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 2139
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 2139
Актуальний варіант запуску:
sudo mitmproxy --mode transparent --showhost --listen-port 2139
Через вебінтерфейс:
sudo mitmweb --mode transparent --showhost --listen-port 2139
Через mitmdump:
sudo mitmdump --mode transparent --showhost --listen-port 2139
У старих прикладах можна зустріти:
mitmproxy -p 2139
Але для transparent mode краще явно вказувати --mode transparent.
Якщо transparent mode не потрібен, а ви просто хочете слухати порт 2139,
використовуйте:
mitmproxy --listen-port 2139
Або:
mitmweb --listen-port 2139
У такому випадку на клієнтському пристрої потрібно вручну вказати proxy:
2139.Перед зупинкою mitmproxy переконайтеся, чи потрібно зберегти потоки.
Збереження потоків через mitmdump:
mitmdump -w flows.mitm
Читання збереженого файлу:
mitmproxy -r flows.mitm
Запис потоків через mitmproxy:
mitmproxy -w flows.mitm
mitmdump зручний, коли потрібен не інтерактивний інтерфейс,
а логування, автоматизація або запуск у скриптах.
Приклад простого запуску:
mitmdump --listen-port 8080
Запис у файл:
mitmdump -w traffic.mitm
Запуск із Python-скриптом:
mitmdump -s script.py
Читання збереженого потоку:
mitmdump -r traffic.mitm
Повний список опцій краще дивитися через:
mitmproxy --help
mitmdump --help
mitmweb --help
Найчастіше використовуються:
--listen-port 8080 — порт, на якому слухає proxy;--listen-host 0.0.0.0 — слухати на всіх інтерфейсах;--mode transparent — transparent proxy mode;--mode reverse:https://example.com — reverse proxy mode;--mode upstream:http://proxy.example:8080 — upstream proxy mode;--showhost — показувати host у flow list;-w file.mitm — записати потоки у файл;-r file.mitm — прочитати потоки з файлу;-s script.py — запустити Python addon/script;--set key=value — встановити параметр конфігурації.Налаштування mitmproxy можна передавати через CLI або конфігураційний файл.
Типова директорія:
~/.mitmproxy/
У цій директорії також зберігаються CA-сертифікати mitmproxy.
Приклад запуску з конфігом:
mitmproxy --conf ~/.mitmproxy/config.yaml
mitmproxy дозволяє змінювати HTTP-трафік через Python addon-скрипти.
Це корисно для тестування API, заголовків, cookies, mock-відповідей і перевірки поведінки клієнта.
Мінімальний приклад:
from mitmproxy import http
def request(flow: http.HTTPFlow) -> None:
flow.request.headers["X-Test"] = "mitmproxy"
Запуск:
mitmproxy -s script.py
Щоб скасувати зроблені раніше NAT-правила:
sudo iptables -t nat -F
Для перевірки:
sudo iptables -t nat -L -n -v
Увага: команда
iptables -t nat -Fочищає всю NAT-таблицю.
Якщо на цій машині вже були інші NAT/firewall-правила, вони також будуть видалені.
ip addr, а не копіюйте eth0 без перевірки.mitmproxy залишається актуальним інструментом для аналізу HTTP/HTTPS-трафіку в Kali Linux,
BlackArch та інших Linux-дистрибутивах.
Для старту найкраще використовувати звичайний proxy mode на порту 8080.
Якщо потрібен старий сценарій із перенаправленням трафіку через iptables, transparent mode усе ще працює,
але його краще використовувати тільки в контрольованому тестовому середовищі.
Для автоматизації краще використовувати mitmdump, для зручного перегляду в браузері —
mitmweb, а для інтерактивного аналізу в терміналі — mitmproxy.