Show HN: Oproxy – 브라우저에서 네트워크 트래픽을 검사·수정
Source: Hacker News
oproxy는 트래픽을 검사·재생·수정할 수 있는 로컬 HTTP, HTTPS, SOCKS5 프록시입니다.
브라우저, CLI, 모바일 앱, API 클라이언트, 서비스 및 테스트 스위트를 자신의 머신이나 로컬 Docker 컨테이너에서 테스트하는 개발자를 위한 도구입니다.
Features
- 로컬 oproxy CA를 신뢰한 뒤 HTTP와 HTTPS 트래픽을 캡처합니다.
- 요청, 응답, 헤더, 본문, 상태, 타이밍, 태그, 메모, 선택된 인스펙터 데이터를 확인합니다.
- 캡처한 요청을 재생하고 Compose에서 엽니다.
- 헤더, 쿼리 파라미터, 인증, 원시 본문, 변수, 컬렉션, cURL 내보내기를 포함한 수동 요청을 생성합니다.
- 캡처를 HAR 형식이나 자동 생성된 cURL, Fetch, Python 스니펫으로 내보냅니다.
- 규칙 세트, map‑remote, map‑local, 접근 규칙, 스로틀링, 브레이크포인트, 모킹 응답, DNS 오버라이드, 캡처 필터, Lua 스크립트, 상위 프록시 체이닝 등을 사용해 트래픽을 수정합니다.
- 인증된 Assistant를 이용해 상태를 점검하고 OpenAI 호환 채팅 모델을 통해 확인된 프록시 변경을 준비합니다.
- 소스 혹은 Docker에서 실행하며 CA 자료와 로컬 상태를 위한 영구 볼륨을 사용합니다.
Demo
Quick Start
Docker
docker run --rm \
--name oproxy \
-p 127.0.0.1:8080:8080 \
-p 127.0.0.1:1080:1080 \
-e OPROXY_BIND_HOST=0.0.0.0 \
-e OPROXY_MITM_ENABLED=true \
-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 파일은 호스트 네트워킹을 사용하고 /app/certs와 /app/storage를 영구화하며 OPROXY_BIND_HOST=0.0.0.0을 설정합니다.
Source
필요 사항:
- Rust 1.85 이상
- Node.js 22 이상
- Corepack을 통한 Yarn
corepack enable
yarn --cwd src/design install --frozen-lockfile
yarn --cwd src/design build
cargo run --release
http://127.0.0.1:8080을 엽니다.
First Request
curl -x http://127.0.0.1:8080 http://example.com
요청이 Sessions 뷰에 표시됩니다.
First HTTPS Capture
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 캡처를 하려면 http://127.0.0.1:8080/admin/ca에서 CA를 다운로드해 브라우저 또는 OS 신뢰 저장소에 설치합니다.
What It Can Do
OPROXY_PORT/port(기본 8080)에서 포워드 HTTP 프록시 역할을 합니다.- 동일 리스너에서 로컬 관리 UI와 API를 제공합니다.
- MITM이 활성화되고 클라이언트가 생성된 CA를 신뢰할 경우 HTTPS CONNECT 트래픽을 가로챕니다.
- 필요에 따라
socks5_port에서 SOCKS5 CONNECT 트래픽을 수신합니다. - 필요에 따라
https_port로 두 번째 TLS 리스너를 실행합니다. - 메모리 내에서 제한된 세션 및 본문 보존 정책으로 실시간 세션을 캡처합니다.
- 관리 엔드포인트를 통해 세션을 명시적으로 저장·로드합니다.
- 기본적으로 민감 정보를 마스킹한 채 HAR, cURL, Fetch, Python 스니펫을 내보냅니다.
- HAR 파일과 oproxy JSON 세션 데이터를 가져올 수 있습니다.
- 서버 전송 이벤트(Server‑Sent Events)로 세션 변경 알림을 스트리밍합니다.
- 캡처된 트래픽이 매칭될 경우 JWT, GraphQL, gRPC, WebSocket 프레임 메타데이터를 검사합니다.
Use Cases
- 애플리케이션 코드를 수정하지 않고 브라우저나 CLI 요청을 디버깅합니다.
- 헤더·본문을 Compose에서 편집한 뒤 캡처된 요청을 재생합니다.
- 프론트엔드가 모킹 응답이나 로컬 픽스처 파일을 사용하도록 테스트합니다.
- 트래픽의 일부를 스테이징 서비스로 라우팅합니다.
- 느리거나 대역폭 제한이 있는 응답을 재현합니다.
- 매칭되는 요청·응답을 일시 중지해 진행을 멈춥니다.
- 요청이 차단·리다이렉트·재작성될 때 클라이언트가 어떻게 동작하는지 검증합니다.
Screenshots
Documentation
- Getting started
- Docker
- HTTPS MITM
- Compose
- Assistant
- Map Local
- DNS overrides
- SOCKS5
- Configuration
- Troubleshooting
- Security
License
MIT

