← 목록
기타 2026-05-28 6KB 읽기 6분

크라우니브라우저 Path A — 로컬직통 라우팅 통합 (2026-05-28)

개요

크라우니브라우저 Path A (macOS WKWebView 기반)에 외부 도메인을 자동으로 127.0.0.1:포트로 우회하는 로컬직통 라우팅을 통합. 169개 가용 도메인 중 dot이 있는 157개를 대상으로 함.

문제점: WKWebView는 macOS 시스템 네트워크 스택을 사용하므로 한선씨 HTTP스택.한선을 통과하지 않음. 해결: 3가지 경로 제공 — 사용자가 선택해 쓸 수 있음.

산출물

파일역할
/Users/ef/crowny-local/hosts-patch.sh/etc/hosts 토글 (157도메인 → 127.0.0.1)
/Users/ef/crowny-local/로컬프록시.한선한선씨 HTTP 포워딩 프록시 (포트 18888)
/Users/ef/crowny-local/로컬프록시.toau컴파일된 바이너리 (152KB)
/Users/ef/crowny-local/로컬프록시.shstart/bg/stop/status 진입 스크립트
/Users/ef/CrownyBrowser/native/crowny-browser.mCROWNY_LOCAL_PROXY=1 환경변수로 프록시 사용
/Users/ef/CrownyBrowser/native/Makefile-framework Network 추가

3가지 옵션 비교

A옵션 — /etc/hosts 패치 (간단, 시스템 전역)

가장 단순. DNS 단계에서 도메인 → 127.0.0.1로 강제. 모든 앱에 영향.

장점: 설정 1회로 모든 클라이언트(브라우저/curl/Node 등) 동작 단점: 시스템 전역, sudo 필요, 게이트웨이 우회 (직접 백엔드 포트로 접속)

bash# 적용 (sudo)
sudo /Users/ef/crowny-local/hosts-patch.sh on    # 157 도메인 → 127.0.0.1

# 상태 확인
/Users/ef/crowny-local/hosts-patch.sh status

# 미리보기 (적용 전)
/Users/ef/crowny-local/hosts-patch.sh preview

# 제거
sudo /Users/ef/crowny-local/hosts-patch.sh off

마커: # === CROWNY LOCAL DIRECT — BEGIN === ~ === END === 블록으로만 변경. 백업: /etc/hosts.crowny.bak (1회 자동). DNS 캐시 자동 플러시 (dscacheutil + mDNSResponder).

주의: 백엔드가 포트별로 떠있어야 함. 게이트웨이 :8080 우회하므로 TLS/Trident/리버스프록시 기능은 사라짐. 개발 직통 용도.

B옵션 — 한선씨 로컬프록시 (격리, 브라우저 설정)

로컬프록시.한선 (한선씨 HTTP 포워딩 프록시)을 포트 18888에 띄움. WKWebView가 이 프록시를 사용하도록 proxyConfigurations 설정.

장점: 격리됨 (시스템 영향 없음), 한선씨 통과 → 로깅/필터 추가 가능 단점: macOS 14.4+ 필요, 브라우저 빌드/환경변수 설정 필요 제한: MVP는 직렬 처리, HTTPS는 직통 connect-relay만 지원

bash# 프록시 시작
/Users/ef/crowny-local/로컬프록시.sh bg          # 백그라운드
/Users/ef/crowny-local/로컬프록시.sh start       # 포그라운드
/Users/ef/crowny-local/로컬프록시.sh status
/Users/ef/crowny-local/로컬프록시.sh stop

# 브라우저 빌드 + 프록시 모드 실행
cd /Users/ef/CrownyBrowser/native && make
CROWNY_LOCAL_PROXY=1 ./CrownyBrowser

검증 결과 (2026-05-28):

  • 컴파일 OK (1397 토큰, 5510 큐브, 152KB)
  • 포트 18888 LISTEN 확인 (lsof -iTCP:18888)
  • bogus host → HTTP 502 ("매핑 없음: bogus.example.com")
  • docs.crowny.org → HTTP 200 (실제 docs 서버 응답 10964 bytes forward)
  • spear.crowny.org → HTTP 200 (실제 spear 서버 응답)

C옵션 — WKURLSchemeHandler (향후, 깊은 통합)

crowny:// 같은 custom scheme만 가로채는 방식. 기존 crowny-internal:// 핸들러 확장. 모든 매핑 도메인을 crowny:// prefix로 바꿔야 하므로 도메인 URL을 그대로 못 씀.

장점: 시스템 영향 0, 외부 도구 불필요 단점: 도메인 URL 그대로 안 됨 (사용자가 crowny://docs.crowny.org/ 같이 입력) 상태: 미구현. 향후 작업 대상.

권장 옵션 — A (hosts 패치)

이유:

  1. 가장 단순. 한 번 적용하면 끝
  2. 다른 도구(curl, Node, 다른 브라우저)에서도 동일하게 동작 → 디버깅 일관성
  3. B는 macOS 14.4+ 제약 + HTTPS 한계
  4. 게이트웨이를 우회하므로 직통 백엔드 개발 시 더 빠름
프로덕션/외부 망 사용: 옵션을 끄고 정상 DNS → 게이트웨이 :8080/8443 경유.

한선씨 동반 검증

  • 로컬프록시.한선 = 한선씨 단일 원본 → .toau 1:1 컴파일
  • crowny-browser.m = WKWebView 통합 필수 (macOS native API).
동반 파일 crowny-browser.한선에 로컬직통 옵션 3가지 문서 추가.
  • hosts-patch.sh = bash. 한선씨로 표현하기엔 /etc/hosts 텍스트 처리 단순.
향후 lbv 본체에 hosts-on/off 명령 추가 가능 (한선씨로).

잔여 이슈

  1. HTTPS 미지원 — 로컬프록시는 plain HTTP만 forward. WKWebView가 https://로 접근하면
상대 백엔드(127.0.0.1:포트)에 HTTPS 핸드셰이크 시도 → 실패. hosts-patch.sh도 동일. 백엔드가 plain HTTP 리스너여야 함 (대부분 그렇다).
  1. 로컬프록시 동시성 — MVP는 직렬 1연결. 다탭 동시 로딩 시 느림.
  2. WKWebView proxy 검증CROWNY_LOCAL_PROXY=1로 실제 도메인 입력 후 트래픽이
18888로 가는지 실측 필요. nw_relay_hop_create API 정확성은 macOS 14.4+ 의존.
  1. lbv 매핑 갱신 — gateway.yaml 변경 시 /tmp/lbv-map 자동 갱신 필요.
현재는 로컬프록시.sh refresh 또는 lbv 리스트 호출로 수동.

학습DB 등록

  • crowny_hosts_patch/etc/hosts 마커 블록 토글 패턴
  • crowny_local_proxy — 한선씨 HTTP forwarding proxy 패턴 (Host 헤더 파싱)

관련 파일

  • /Users/ef/crowny-local/lbv — gateway.yaml 매핑 추출 (157 도메인)
  • /Users/ef/crowny-gateway/gateway.yaml — SSOT (서비스 목록 단일 원본)
  • /tmp/lbv-map — 추출된 도메인|포트|name (refresh 시 갱신)
  • /Users/ef/CrownyBrowser/CLAUDE.md — Path A 기본 구조