oproxy
oproxy — это локальный HTTP-, HTTPS- и SOCKS5-прокси для просмотра, повторного воспроизведения и изменения трафика.
Он предназначен для разработчиков, тестирующих браузеры, CLI-приложения, мобильные приложения, API-клиенты, сервисы и тестовые наборы на своей машине или в локальном Docker-контейнере.
Возможности
- Захват HTTP-трафика и HTTPS-трафика после доверия к локальному CA oproxy.
- Просмотр запросов, ответов, заголовков, тел, статусов, таймингов, тегов, заметок и выбранных данных инспектора.
- Повторное воспроизведение захваченных запросов и их открытие в Compose.
- Создание ручных запросов с заголовками, параметрами запроса, аутентификацией, raw-телами, переменными, коллекциями и экспортом в cURL.
- Экспорт захватов в формате HAR или в виде сгенерированных snippet'ов cURL, Fetch и Python.
- Изменение трафика с помощью наборов правил, map-remote, map-local, правил доступа, троттлинга, точек останова, mock-ответов, переопределений DNS, фильтров захвата, Lua-скриптов и цепочки вышестоящих прокси.
- Использование аутентифицированного Assistant для проверки состояния и подготовки подтверждённых изменений прокси через чат-модель, совместимую с OpenAI.
- Запуск из исходного кода или Docker с постоянными томами для материала CA и локального состояния.
Демо
Короткое демо-видео
Быстрый старт
Docker
docker run --rm \
--name oproxy \
-p 127.0.0.1:8080:8080 \
-p 127.0.0.1:8443:8443/udp \
-e OPROXY_BIND_HOST=0.0.0.0 \
-e OPROXY_MITM_ENABLED=true \
-e OPROXY_HTTP3_ENABLED=true \
-e OPROXY_HTTP3_PORT=8443 \
-e OPROXY_ALLOW_REMOTE_ADMIN=true \
-e OPROXY_ADMIN_TOKEN=<change-me-to-a-strong-secret> \
-v oproxy-certs:/app/certs \
-v oproxy-storage:/app/storage \
ghcr.io/sauravrao637/oproxy:latest
Откройте http://127.0.0.1:8080 и войдите с помощью токена.
Или соберите локально:
docker build -t oproxy:latest .
Docker Compose
docker compose up --build
Включённый файл Compose использует bridge-сеть с опубликованными портами на loopback, сохраняет /app/certs и /app/storage и устанавливает OPROXY_BIND_HOST=0.0.0.0. Пользователи Linux могут дополнительно включить host-сеть.
Из исходного кода
Требования:
- Rust 1.85 или новее
- Node.js 22 или новее
- Yarn через Corepack
corepack enable
yarn --cwd src/design install --frozen-lockfile
yarn --cwd src/design build
cargo run --release
Откройте http://127.0.0.1:8080.
Первый запрос
curl -x http://127.0.0.1:8080 http://example.com
Запрос появится в представлении Sessions.
Первый HTTPS-захват
curl http://127.0.0.1:8080/admin/ca -o oproxy-ca.crt
curl --cacert oproxy-ca.crt -x http://127.0.0.1:8080 https://example.com
Для захвата HTTPS в браузере установите CA из http://127.0.0.1:8080/admin/ca в хранилище доверия браузера или ОС.
Что он умеет
- Работать как прямой HTTP-прокси на
OPROXY_PORT/port, по умолчанию 8080.
- Обслуживать локальный управляющий UI и API с того же слушателя.
- Перехватывать HTTPS CONNECT-трафик, когда MITM включён и клиент доверяет сгенерированному CA.
- Опционально принимать SOCKS5 CONNECT-трафик на
socks5_port.
- Опционально запускать второй TLS-слушатель на
https_port.
- Захватывать живые сессии в памяти с ограниченным хранением сессий и тел.
- Явно сохранять и загружать сессии через admin-эндпоинты.
- Экспортировать HAR, cURL, Fetch и Python snippet'ы, по умолчанию с редактированием конфиденциальных данных.
- Импортировать HAR-файлы и данные сессий oproxy в формате JSON.
- Передавать уведомления об изменениях сессий с помощью server-sent events.
- Инспектировать метаданные кадров JWT, GraphQL, gRPC и WebSocket при захвате соответствующего трафика.
Варианты использования
- Отладка запроса из браузера или CLI без изменения кода приложения.
- Повторное воспроизведение захваченного запроса после редактирования заголовков или тела в Compose.
- Тестирование фронтенда против mock-ответов или локальных fixture-файлов.
- Маршрутизация части трафика на staging-сервис.
- Воспроизведение медленных ответов или ответов с ограниченной пропускной способностью.
- Приостановка подходящих запросов или ответов до их продолжения.
- Проверка поведения клиента, когда запросы блокируются, перенаправляются или переписываются.
Скриншоты


Документация
Лицензия
MIT