# Mitmproxy → HAR ## Быстрый старт ### Вариант 1: mitmweb (проще всего) ```bash # 1. Запустить mitmweb mitmweb --mode regular # 2. Открыть в браузере http://127.0.0.1:8081 # 3. Настроить прокси в браузере # localhost:8081 # 4. Выполнить действия на Kwork # 5. Экспорт: File → Export → HAR ``` ### Вариант 2: mitmdump + конвертация ```bash # 1. Записать трафик mitmdump -w kwork-dump.mitm # 2. Конвертировать в HAR python3 scripts/mitmproxy-to-har.py kwork-dump.mitm kwork-dump.har # 3. Анализировать jq '.log.entries | length' kwork-dump.har ``` ## Настройка прокси ### Системный прокси (Linux) ```bash export http_proxy=http://127.0.0.1:8081 export https_proxy=http://127.0.0.1:8081 ``` ### Firefox 1. Настройки → Прокси 2. Manual proxy configuration 3. HTTP Proxy: 127.0.0.1:8081 4. ☑ Also use for HTTPS ### Chrome ```bash # Запустить с прокси google-chrome --proxy-server="127.0.0.1:8081" ``` ## Установка сертификата ```bash # 1. Открыть в браузере http://mitm.it # 2. Скачать сертификат для вашей ОС # 3. Установить в доверенные # Linux: sudo cp mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/ sudo update-ca-certificates # 4. Перезапустить браузер ``` ## Фильтрация трафика ```bash # Только Kwork mitmdump -w kwork.mitm --set 'filter=~u kwork\.ru' # Только API mitmdump -w kwork-api.mitm --set 'filter=~u /api/' # Исключить статику mitmdump -w kwork.mitm --set 'filter=!~u \.(css|js|png|jpg|gif|svg)' ``` ## Скрипт для записи Kwork ```bash #!/bin/bash # record-kwork.sh echo "Starting mitmproxy recording for Kwork..." echo "Configure your browser to use proxy: localhost:8081" echo "Press Ctrl+C when done" mitmdump \ -w kwork-session.mitm \ --set 'filter=~u kwork\.ru' \ --set 'ignore_hosts=~u (cdn|counter|yandex|google)' \ --set 'keep_host_headers=true' echo "Converting to HAR..." python3 scripts/mitmproxy-to-har.py kwork-session.mitm kwork-session.har echo "Done! File: kwork-session.har" echo "Analyze with: jq '.log.entries | length' kwork-session.har" ``` ## Анализ записанного HAR ```bash # Количество запросов jq '.log.entries | length' kwork-session.har # JSON эндпоинты jq '[.log.entries[] | select(.response.content.mimeType | test("json"; "i")) | .request.url | split("?")[0]] | unique' kwork-session.har # Самые большие ответы jq '[.log.entries[] | {url: .request.url, size: .response.bodySize}] | sort_by(.size) | reverse | .[0:10]' kwork-session.har # Авторизация jq '[.log.entries[].request.headers[] | select(.name | ascii_downcase | test("authorization|cookie"; "i"))] | unique' kwork-session.har ``` ## Типичные проблемы ### SSL ошибки ```bash # Игнорировать SSL ошибки mitmdump --set 'ignore_hosts=.*' # Или отключить проверку mitmdump --set 'ssl_insecure=true' ``` ### WebSocket ```bash # WebSocket не экспортируется в HAR # Используйте --show-websocket для отладки mitmdump --show-websocket ``` ### Сжатый трафик ```bash # mitmproxy автоматически распаковывает # Если нужно сырое: mitmdump --set 'rawtcp=true' ``` --- _Updated: 2026-03-22_