Перейти до вмісту
Гайды 5 хв читання 35 переглядів

mitmproxy

Дослідіть mitmproxy, щоб ефективно перехоплювати та аналізувати HTTP/S трафік. Ідеально підходить для налагодження, тестування безпеки та покращення робочих процесів розробки.

Безопасность
mitmproxy

mitmproxy — це безкоштовний інтерактивний консольний інструмент з відкритим вихідним кодом, веб-інтерфейс та бібліотека Python, розроблені для перехоплення, інспекції, модифікації та повторного відтворення HTTP/S трафіку. Він слугує потужним проксі-сервером "людина посередині" для розробників, дослідників безпеки та інженерів з контролю якості, які працюють з веб-додатками, API та мобільним трафіком.

Огляд mitmproxy

mitmproxy працює як проксі-сервер, розташований між клієнтом і цільовим сервером. Весь HTTP та HTTPS трафік, що проходить через проксі, можна переглядати, фільтрувати та маніпулювати ним у реальному часі. Його основна функціональність дозволяє глибоко інспектувати заголовки запитів і відповідей, тіла та інші атрибути. Набір інструментів включає:

  • mitmproxy: Інтерактивний термінальний інтерфейс для аналізу трафіку в реальному часі.
  • mitmweb: Графічний інтерфейс користувача на основі браузера, що пропонує функціональність, подібну до mitmproxy, але доступний через веб-браузер.
  • mitmdump: Інструмент командного рядка для програмної модифікації та логування трафіку, придатний для скриптингу та автоматизації.

Ключові функції

Перехоплення SSL/TLS

mitmproxy генерує власні SSL/TLS сертифікати на льоту, дозволяючи розшифровувати та інспектувати зашифрований HTTPS трафік. Для цього клієнт повинен довіряти CA сертифікату mitmproxy.

Інтерактивний інтерфейс

Як mitmproxy, так і mitmweb надають інтерактивні середовища для перегляду та керування потоками трафіку. Користувачі можуть фільтрувати потоки, шукати вміст, редагувати запити/відповіді та позначати певні потоки для подальшого аналізу.

Модифікація трафіку

Запити та відповіді можна модифікувати на льоту за допомогою інтерактивного інтерфейсу або за допомогою скриптів Python. Це дозволяє тестувати граничні випадки, вводити заголовки, змінювати дані або симулювати різні відповіді сервера.

Функціональність повторного відтворення

mitmproxy підтримує повторне відтворення записаних клієнтських запитів до сервера або повторне відтворення відповідей сервера клієнту. Це корисно для тестування конкретних сценаріїв без повторного виконання дій клієнта або для симуляції поведінки сервера.

Скриптинг та автоматизація

mitmdump надає Python API для розробки власних скриптів. Ці скрипти можуть програмно інспектувати, модифікувати, перенаправляти або відкидати трафік на основі визначеної логіки, що полегшує автоматизоване тестування та складні маніпуляції з трафіком.

Режим прозорого проксі

mitmproxy може працювати в режимі прозорого проксі, де клієнтам не потрібна явна конфігурація проксі. Мережевий трафік перенаправляється до mitmproxy на мережевому рівні, часто за допомогою правил маршрутизатора або конфігурацій брандмауера.

Встановлення

mitmproxy можна встановити за допомогою pip:

pip install mitmproxy

Для конкретних операційних систем попередньо скомпільовані бінарні файли доступні на офіційному веб-сайті mitmproxy, або його можна встановити за допомогою менеджерів пакетів, таких як Homebrew на macOS.

Базове використання

Запуск mitmproxy

Щоб запустити інтерактивний консольний інтерфейс:

mitmproxy

Щоб запустити веб-інтерфейс:

mitmweb

За замовчуванням mitmproxy прослуховує localhost:8080.

Конфігурація клієнта

Клієнти повинні бути налаштовані на використання mitmproxy як свого HTTP/S проксі.

Приклад браузера (Firefox):
1. Відкрийте налаштування Firefox.
2. Перейдіть до "Налаштування мережі" або "Налаштування проксі".
3. Виберіть "Ручна конфігурація проксі".
4. Встановіть HTTP Proxy на 127.0.0.1 та Port на 8080.
5. Встановіть SSL Proxy на 127.0.0.1 та Port на 8080.
6. Переконайтеся, що позначено "Використовувати цей проксі-сервер для всіх протоколів" або налаштуйте інші протоколи аналогічно.

Операційна система (macOS):
1. Перейдіть до System Settings > Network > Wi-Fi > Details.
2. Виберіть "Proxies".
3. Увімкніть "Web Proxy (HTTP)" та "Secure Web Proxy (HTTPS)".
4. Встановіть Server на 127.0.0.1 та Port на 8080 для обох.

Встановлення SSL/TLS сертифіката

Щоб розшифрувати HTTPS трафік, клієнти повинні довіряти CA сертифікату mitmproxy.
1. Коли mitmproxy запущено, перейдіть у браузері налаштованого клієнта за адресою http://mitm.it.
2. Завантажте та встановіть відповідний CA сертифікат для операційної системи або браузера клієнта.
3. Для систем, таких як Android або iOS, потрібні спеціальні кроки встановлення, які часто включають завантаження сертифіката та ручне довіряння йому в налаштуваннях безпеки.

Розширене використання

Модифікація запитів та відповідей

З інтерфейсу mitmproxy або mitmweb:
1. Виберіть потік.
2. Натисніть e (edit), щоб змінити запит або відповідь.
3. Виберіть компонент для редагування (наприклад, заголовки, тіло, URL).
4. Внесіть зміни та натисніть q, щоб зберегти та продовжити потік.

Скриптинг за допомогою mitmdump

Скрипти Python можуть бути передані mitmdump для автоматизації маніпуляцій з трафіком.

Приклад: Модифікація заголовка запиту

modify_header.py:

from mitmproxy import http

def request(flow: http.HTTPFlow):
    if "example.com" in flow.request.pretty_host:
        flow.request.headers["X-Modified-By"] = "mitmproxy-script"
        print(f"Modified header for {flow.request.url}")

Запуск з mitmdump:

mitmdump -s modify_header.py

Цей скрипт додає власний заголовок X-Modified-By до запитів, що надсилаються на example.com.

Приклад: Модифікація тіла відповіді

modify_response.py:

from mitmproxy import http

def response(flow: http.HTTPFlow):
    if "api.example.com/data" in flow.request.url and flow.response.content:
        # Assuming the response is JSON
        data = flow.response.json()
        data["status"] = "modified_by_mitmproxy"
        flow.response.set_json(data)
        print(f"Modified response body for {flow.request.url}")

Запуск з mitmdump:

mitmdump -s modify_response.py

Цей скрипт перехоплює відповіді від api.example.com/data, розбирає їх як JSON, модифікує поле та надсилає змінений JSON назад клієнту.

Повторне відтворення потоків

mitmproxy дозволяє повторно відтворювати захоплені HTTP потоки.

Повторне відтворення клієнтського запиту:
1. У mitmproxy або mitmweb виберіть потік.
2. Натисніть r, щоб повторно відтворити клієнтський запит до сервера. Це повторно надсилає точний запит без взаємодії з клієнтом.

Повторне відтворення відповіді сервера:
1. Виберіть потік.
2. Натисніть R (shift+r), щоб повторно відтворити відповідь сервера клієнту. Це надсилає записану відповідь сервера назад клієнту, оминаючи фактичну взаємодію з сервером. Корисно для тестування поведінки на стороні клієнта з конкретними відповідями сервера.

Варіанти використання

  • Розробка та налагодження API: Інспектування запитів та відповідей для розуміння поведінки API, перевірки форматів даних та налагодження проблем інтеграції.
  • Тестування безпеки: Виявлення вразливостей шляхом маніпулювання запитами (наприклад, впровадження SQL, XSS-навантажень), тестування механізмів автентифікації та аналіз зашифрованого трафіку.
  • Аналіз мобільних додатків: Перехоплення та аналіз трафіку з мобільних додатків для розуміння їхньої взаємодії з бекендом, обробки даних та потенційних недоліків безпеки.
  • Зворотна розробка: Деконструкція пропрієтарних протоколів або розуміння того, як програми взаємодіють з віддаленими серверами, спостерігаючи за їхніми мережевими комунікаціями.
  • Автоматизоване тестування: Використання скриптів mitmdump для симуляції конкретних мережевих умов, імітації відповідей API або виконання автоматизованих перевірок поведінки програми.

mitmproxy проти інших проксі-інструментів

Хоча кілька інструментів пропонують перехоплення HTTP/S, mitmproxy відрізняється своєю відкритою природою, потужною скриптовістю та гнучкими інтерфейсами.

Функція mitmproxy Burp Suite Community Edition Fiddler (Windows)
Ліцензія Відкритий вихідний код (MIT) Власницька (безкоштовні/платні рівні) Власницька (безкоштовні/платні рівні)
Скриптовість Python API (mitmdump) Обмежена (розширення через Java/Python/Ruby) FiddlerScript (JScript.NET), розширення .NET
Інтерфейс Консоль (mitmproxy), Веб-інтерфейс (mitmweb) Десктопний GUI Десктопний GUI
SSL/TLS Повне перехоплення Повне перехоплення Повне перехоплення
Модифікація трафіку Так Так Так
Повторне відтворення Так (клієнт/сервер) Так (Repeater) Так (Composer)
Прозорий проксі Так Так Так
Цільова аудиторія Розробники, дослідники безпеки, автоматизація Тестери на проникнення, безпека веб-додатків Розробники, тестери, безпека веб-додатків
Платформа Кросплатформний (Linux, macOS, Windows) Кросплатформний (на основі Java) Windows, macOS (через Fiddler Everywhere)

Це порівняння підкреслює сильні сторони mitmproxy в автоматизації та гнучкості відкритого вихідного коду, що робить його надійним вибором для технічних користувачів, яким потрібен глибокий контроль над робочими процесами аналізу трафіку.

Оновлено: 04.03.2026
Назад до категорії

Читайте також

Гайды 1 хв

Налаштування проксі в Cypress для E2E тестування

Налаштування проксі в Cypress: змінні HTTP_PROXY, cy-proxy-middleware та тестування геозалежного контенту.

Гайды 1 хв

Як автоматизувати купівлю проксі через API

Автоматизація купівлі та управління проксі через API провайдерів: інтеграція, моніторинг використання та автопоновлення.

Гайды 1 хв

Створення інформаційної панелі моніторингу проксі в Grafana

Покрокове створення інформаційної панелі для моніторингу проксі в Grafana: метрики,

Гайды 1 хв

Як тестувати проксі перед покупкою

Чек-лист тестування проксі перед покупкою: швидкість, стабільність, анонімність, гео та сумісність з ціллю

Гайды 1 хв

Як налаштувати липкі сесії через проксі

Липкі сесії: підтримка однієї IP-адреси протягом усієї сесії, налаштовуються через провайдера та самостійно.

Гайды 1 хв

Використання проксі з Camoufox

Camoufox — це модифікований Firefox для обходу антиботів. Налаштування проксі, відбиток та режим невидимості.

Спробуйте наші проксі

20,000+ проксі в 100+ країнах світу

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.