레퍼런스
기능 매트릭스
gori에는 같은 프로젝트 데이터와 엔진 모듈을 쓰는 세 진입점이 있습니다. 대화형 TUI,
헤드리스 gori run CLI, MCP 서버입니다. 엔진을 공유한다는 말은 노출된 워크플로에서 같은
요청 정책과 분석을 사용한다는 뜻이지, 모든 UI 동작이 CLI 명령이나 MCP 도구라는 뜻은
아닙니다.
프로토콜과 동작
지원 범위가 제한된 경우 셀에 그 경계를 함께 밝혔습니다. 재전송과 퍼징은 gori가 만드는 요청이며, 어느 표면에서 실행하든 같은 아웃바운드 스코프·Sandbox·명시적 exclude 게이트를 통과합니다.
| 프로토콜 | 캡처 | 인터셉트 | 재전송 | 퍼징 |
|---|---|---|---|---|
| HTTP/1.1 | 전체 요청·응답 플로우 | 요청과 끝이 있는 응답. 업그레이드, SSE, close-delimited 응답은 그대로 스트리밍 | 지원 | 지원 |
| HTTP/2 | 스트림별 플로우와 원시 프레임 로그 | 스트림별 처리. 선언된 본문이 1 MiB 이하면 편집 가능하고, 그 밖에는 head만 홀드 | 실제 h2 연결로 지원 | 지원 |
| HTTP/1.1 WebSocket | 핸드셰이크와 메시지 트랜스크립트 | 필터에 proto:ws를 명시한 경우 메시지 홀드 |
메시지 스크립트 지원 | 핸드셰이크·메시지 위치 지원 |
| HTTP/2 WebSocket (RFC 8441) | 핸드셰이크, h2 프레임, 메시지 트랜스크립트 | 핸드셰이크만 가능. 메시지는 홀드하지 않음 | 메시지 스크립트 지원. 캡처 자신의 확장 CONNECT로 소켓을 다시 엽니다 |
핸드셰이크·메시지 위치 지원 |
| HTTP/2 gRPC | 프레이밍된 메시지, 트레일러, protobuf 투영 | 단항/작고 길이가 선언된 본문은 편집 가능. 스트리밍 본문은 head만 홀드 | 지원. 단항 호출은 스키마 기반 편집 가능 | 스키마가 아는 단항 필드 또는 원시 요청 위치 지원 |
| Server-Sent Events | 응답을 캡처하고 이벤트로 투영 | 요청은 홀드할 수 있으나 스트리밍 응답은 불가 | HTTP 요청으로 지원 | HTTP 요청으로 지원 |
| HTTP/3 | 미지원 | 미지원 | 미지원 | 미지원 |
버퍼링, WebSocket, gRPC, HTTP/3의 세부 동작은 Proxy & History 가이드를 참고하세요. “전체” 캡처도 설정한 본문 저장 상한은 따릅니다. 상한 뒤의 트래픽은 바이트 그대로 계속 전달되고, 플로우에는 캡처 크기와 실제 와이어 크기가 함께 기록됩니다.
진입점
| 기능 | TUI (gori) |
헤드리스 (gori run) |
MCP (gori mcp) |
|---|---|---|---|
| 캡처 프록시 시작 | 지원 | gori run capture |
미지원 |
| 라이브 인터셉트 큐 소유 | 지원 | 미지원. 헤드리스 capture는 메시지를 홀드하지 않음 | 미지원 |
| 라이브 인터셉트 항목 조회·결정 | 직접 수행 | 캡처 중인 TUI가 큐를 게시할 때 gori run intercept |
캡처 중인 TUI가 큐를 게시할 때 intercept 도구 |
| History, Sitemap, Probe 발견, Issues, Notes 읽기 | 지원 | 지원 | 지원 |
| 요청 재전송과 액티브 send | 지원 | 지원 | 지원 |
| Fuzzer, Miner, Discover, Sequencer, Authorize 엔진 실행 | 지원 | 지원 | 지원 |
| UI 탐색, 패널 포커스, 테마, 단축키 편집 | 지원 | 해당 없음 | 해당 없음 |
정확한 명령·도구 목록은 CLI 레퍼런스와
MCP 가이드에 있습니다. MCP는 리스너 없이 시작해 보통 기존 프로젝트에
연결됩니다. --read-only가 변경 및 라이브 요청 도구를 제거하는 것도 의도적인 표면 차이입니다.
현재 경계
- HTTP/2 본문 규칙은 프로토콜을 포기하게 만들 수 있습니다. 매칭되는 Match & Replace body 규칙, body 범위 extract 규칙, short-circuit 규칙은 그 호스트의 다음 연결을 HTTP/1.1로 내립니다. 다운그레이드가 적용되는 동안 gRPC를 포함한 HTTP/2 전용 클라이언트는 그 호스트를 사용할 수 없습니다. Head 규칙, Intercept, Sandbox는 h2에 남습니다.
- RFC 8441 메시지는 실시간 인터셉트·재작성이 불가합니다. HTTP/2 WebSocket을 캡처하고
Repeater/Fuzzer에서 다시 열지만, 메시지 단위 Intercept와 메시지 Match & Replace는
HTTP/1.1 전용입니다 — 둘 다 DATA 페이로드를 다른 길이로 다시 프레이밍해야 하고, 그것은
상대 피어의 흐름 제어 윈도우와 교착을 일으킵니다. 재전송은 h2로 다이얼해 오리진의
SETTINGS_ENABLE_CONNECT_PROTOCOL을 기다린 뒤101이 아니라2xx를 소켓이 열린 신호로 판정하며, 그 설정을 광고하지 않는 오리진은 빈 트랜스크립트가 아니라 설정을 지목하는 거부로 끝납니다. - HTTP/3은 프록시 범위 밖입니다.
network.strip_alt_svc로 h3를 광고하는 응답 필드를 제거할 수는 있지만 QUIC이나 DNS로 알아낸 경로를 인터셉트할 수는 없습니다. - upstream
https://표기는 레거시이며 프록시까지 TLS를 뜻하지 않습니다. 현재host:port,http://…,https://…는 모두 평문 HTTP CONNECT 프록시를 뜻하고, 원 서버 HTTPS가 그 터널 안에서 동작합니다.socks5://와socks5h://는 SOCKS를 선택합니다. - TLS fingerprint 프리셋은 근사치입니다. OpenSSL이 노출하는 값 수준 ClientHello 필드를 제어하지만 확장 순서와 GREASE 위치는 제어하지 못하므로, 브라우저의 JA3/JA4와 바이트 단위로 같다고 약속하지 않습니다.
이 한계는 액티브 트래픽 게이트를 우회해도 된다는 뜻이 아닙니다. 권한을 받은 테스트 범위 안에서만 대상을 지정하세요.