- mitmproxy/auth.py: Basic Auth addon - mitmproxy/start.sh: Startup script - mitmproxy/mitmproxy.conf: Configuration - mitmproxy.service: systemd service - scripts/view_flows.py: Log viewer for Claw - mitmproxy/INSTALL.md: Full installation guide Features: - HTTP Basic Auth (claw / KworkParser2026!) - Captures traffic from phone - Logs saved to flows.mitm - Easy log viewing for AI analysis
313 lines
6.7 KiB
Markdown
313 lines
6.7 KiB
Markdown
# Установка и запуск mitmproxy на VPS
|
||
|
||
## 1. Установка mitmproxy
|
||
|
||
### Вариант A: pip (рекомендуется)
|
||
|
||
```bash
|
||
# Установить pip
|
||
apt-get update && apt-get install -y python3-pip
|
||
|
||
# Установить mitmproxy
|
||
pip3 install mitmproxy
|
||
|
||
# Проверка
|
||
mitmdump --version
|
||
```
|
||
|
||
### Вариант B: Docker (если pip не работает)
|
||
|
||
```bash
|
||
# Установить Docker
|
||
apt-get install -y docker.io
|
||
|
||
# Запустить в контейнере
|
||
docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy \
|
||
mitmdump -p 8080 --mode regular
|
||
```
|
||
|
||
### Вариант C: apt (старая версия)
|
||
|
||
```bash
|
||
apt-get install -y mitmproxy
|
||
```
|
||
|
||
---
|
||
|
||
## 2. Настройка firewall
|
||
|
||
```bash
|
||
# Открыть порт 8080
|
||
ufw allow 8080/tcp
|
||
|
||
# Проверить
|
||
ufw status
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Генерация сертификата
|
||
|
||
```bash
|
||
# Первый запуск создаст сертификат
|
||
mitmproxy --version
|
||
|
||
# Сертификаты будут в ~/.mitmproxy/
|
||
ls -la ~/.mitmproxy/
|
||
```
|
||
|
||
---
|
||
|
||
## 4. Запуск с авторизацией
|
||
|
||
### Быстрый старт
|
||
|
||
```bash
|
||
cd /root/kwork-parser/mitmproxy
|
||
chmod +x start.sh
|
||
./start.sh
|
||
```
|
||
|
||
### Вручную
|
||
|
||
```bash
|
||
mitmdump \
|
||
-s /root/kwork-parser/mitmproxy/auth.py \
|
||
--set auth_user=claw \
|
||
--set auth_pass="KworkParser2026!" \
|
||
-p 8080 \
|
||
--mode regular \
|
||
-w /root/kwork-parser/mitmproxy/flows.mitm
|
||
```
|
||
|
||
### Как systemd сервис
|
||
|
||
```bash
|
||
# Установить сервис
|
||
cp /root/kwork-parser/mitmproxy/mitmproxy.service /etc/systemd/system/
|
||
|
||
# Запустить
|
||
systemctl daemon-reload
|
||
systemctl enable mitmproxy
|
||
systemctl start mitmproxy
|
||
|
||
# Проверить статус
|
||
systemctl status mitmproxy
|
||
|
||
# Логи
|
||
journalctl -u mitmproxy -f
|
||
```
|
||
|
||
---
|
||
|
||
## 5. Настройка телефона
|
||
|
||
### Android
|
||
|
||
1. Настройки → Wi-Fi
|
||
2. Долгое нажатие на сеть → Modify network
|
||
3. Advanced → Proxy: Manual
|
||
4. Proxy hostname: `<VPS_IP>`
|
||
5. Proxy port: `8080`
|
||
6. Сохранить
|
||
|
||
### iPhone
|
||
|
||
1. Настройки → Wi-Fi
|
||
2. Нажать на ⓘ рядом с сетью
|
||
3. Configure Proxy: Manual
|
||
4. Server: `<VPS_IP>`
|
||
5. Port: `8080`
|
||
6. Authentication: ON
|
||
- Username: `claw`
|
||
- Password: `KworkParser2026!`
|
||
7. Save
|
||
|
||
### Установка сертификата (Android)
|
||
|
||
1. Открыть браузер на телефоне
|
||
2. Перейти: `http://<VPS_IP>:8080/mitmproxy/mitmproxy-ca.cer`
|
||
3. Скачать сертификат
|
||
4. Настройки → Security → Install certificate
|
||
5. Выбрать файл: `mitmproxy-ca.cer`
|
||
6. Name: `mitmproxy`
|
||
7. OK
|
||
|
||
### Установка сертификата (iPhone)
|
||
|
||
1. Safari: `http://<VPS_IP>:8080/mitmproxy/mitmproxy-ca.cer`
|
||
2. Allow → Profile downloaded
|
||
3. Настройки → Profile downloaded → Install
|
||
4. Настройки → General → About → Certificate Trust Settings
|
||
5. Включить доверие для mitmproxy
|
||
|
||
---
|
||
|
||
## 6. Проверка работы
|
||
|
||
### С телефона
|
||
|
||
```bash
|
||
# Открыть браузер на телефоне
|
||
# Перейти на http://example.com
|
||
```
|
||
|
||
### На VPS
|
||
|
||
```bash
|
||
# Посмотреть логи
|
||
tail -f /root/kwork-parser/mitmproxy/mitmproxy.log
|
||
|
||
# Или через скрипт
|
||
python3 /root/kwork-parser/scripts/view_flows.py --last 10
|
||
```
|
||
|
||
---
|
||
|
||
## 7. Просмотр логов
|
||
|
||
### Последние запросы
|
||
|
||
```bash
|
||
python3 /root/kwork-parser/scripts/view_flows.py --last 20
|
||
```
|
||
|
||
### Только Kwork
|
||
|
||
```bash
|
||
python3 /root/kwork-parser/scripts/view_flows.py --domain kwork.ru --last 50
|
||
```
|
||
|
||
### Только JSON
|
||
|
||
```bash
|
||
python3 /root/kwork-parser/scripts/view_flows.py --json --last 20
|
||
```
|
||
|
||
### Полная информация
|
||
|
||
```bash
|
||
python3 /root/kwork-parser/scripts/view_flows.py --domain kwork.ru --full
|
||
```
|
||
|
||
### В реальном времени
|
||
|
||
```bash
|
||
tail -f /root/kwork-parser/mitmproxy/flows.mitm | \
|
||
python3 -c "
|
||
import sys
|
||
from mitmproxy import io
|
||
for flow in io.FlowReader(sys.stdin.buffer).read():
|
||
if hasattr(flow, 'request'):
|
||
print(f'{flow.request.method} {flow.request.url}')
|
||
"
|
||
```
|
||
|
||
---
|
||
|
||
## 8. Безопасность
|
||
|
||
### Что защищено
|
||
|
||
✅ **Авторизация** — Basic Auth (логин/пароль)
|
||
✅ **Firewall** — только порт 8080 открыт
|
||
✅ **Изоляция** — mitmproxy работает от root (для systemd)
|
||
|
||
### Рекомендации
|
||
|
||
1. **Смени пароль** после первого запуска:
|
||
```bash
|
||
# В auth.py и start.sh
|
||
auth_pass="НовыйПароль2026!"
|
||
```
|
||
|
||
2. **Ограничь IP** (если возможно):
|
||
```bash
|
||
# В start.sh добавить:
|
||
--set allow_hosts=["твой_домашний_IP"]
|
||
```
|
||
|
||
3. **Используй HTTPS** для mitmweb:
|
||
```bash
|
||
mitmweb --web-port 8081 --ssl-keyfile key.pem --ssl-certfile cert.pem
|
||
```
|
||
|
||
4. **Очищай логи** регулярно:
|
||
```bash
|
||
# Cron: очищать раз в день
|
||
0 0 * * * truncate -s 0 /root/kwork-parser/mitmproxy/flows.mitm
|
||
```
|
||
|
||
5. **Не логируй чувствительные данные**:
|
||
```bash
|
||
# Игнорировать banking сайты
|
||
mitmdump --set 'ignore_hosts=~u (bank|payment|stripe)"'
|
||
```
|
||
|
||
---
|
||
|
||
## 9. Troubleshooting
|
||
|
||
### Ошибка: Address already in use
|
||
|
||
```bash
|
||
# Проверить кто использует порт
|
||
lsof -i :8080
|
||
|
||
# Убить процесс
|
||
kill -9 <PID>
|
||
```
|
||
|
||
### Ошибка: Certificate not trusted
|
||
|
||
```bash
|
||
# Переустановить сертификат на телефоне
|
||
# Удалить старый из доверенных
|
||
# Скачать заново: http://<VPS_IP>:8080/mitmproxy/mitmproxy-ca.cer
|
||
```
|
||
|
||
### Ошибка: Authentication failed
|
||
|
||
```bash
|
||
# Проверить логин/пароль
|
||
# Логин: claw
|
||
# Пароль: KworkParser2026!
|
||
|
||
# В настройках прокси телефона включить Authentication
|
||
```
|
||
|
||
### mitmproxy не стартует
|
||
|
||
```bash
|
||
# Проверить логи
|
||
journalctl -u mitmproxy -n 50
|
||
|
||
# Проверить конфиг
|
||
cat /root/kwork-parser/mitmproxy/mitmproxy.log
|
||
```
|
||
|
||
---
|
||
|
||
## 10. Команды для Claw (AI)
|
||
|
||
```bash
|
||
# Посмотреть последние запросы
|
||
python3 /root/kwork-parser/scripts/view_flows.py --last 20
|
||
|
||
# Найти API эндпоинты
|
||
python3 /root/kwork-parser/scripts/view_flows.py --json --domain kwork.ru
|
||
|
||
# Экспортировать в HAR
|
||
python3 /root/kwork-parser/scripts/mitmproxy-to-har.py \
|
||
/root/kwork-parser/mitmproxy/flows.mitm \
|
||
/root/kwork-parser/mitmproxy/export.har
|
||
|
||
# Анализ HAR
|
||
jq '[.log.entries[] | select(.request.url | contains("kwork"))] | length' \
|
||
/root/kwork-parser/mitmproxy/export.har
|
||
```
|
||
|
||
---
|
||
|
||
_Updated: 2026-03-22_
|