- scripts/mitmproxy-to-har.py: Конвертер mitm → HAR - MITMPROXY.md: Инструкция по записи и конвертации - Два способа: mitmweb (GUI) и mitmdump + скрипт
157 lines
3.6 KiB
Markdown
157 lines
3.6 KiB
Markdown
# 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_
|