forwarder
forwarder는 Playwright 기반 세션 유지형 포워드 프록시 모듈입니다. requestKey로 허용된 대상만 호출하며, 사용자별 브라우저 컨텍스트와 SQLite 세션 저장소를 사용해 쿠키, localStorage, IndexedDB 상태를 유지합니다.
책임 범위
ForwardUrls에 등록된requestKey를 실제 target URL로 변환합니다.- BearerToken과 클라이언트 IP 허용 목록을 확인한 뒤 프록시 요청을 실행합니다.
- 브라우저형 요청과 프로그램형 요청을 구분해 세션 유지 전략을 적용합니다.
- HTML 응답에는
<base>태그를 주입해 상대 경로 리소스가 원본 사이트 기준으 로 동작하게 합니다. - 상위 프록시, HTTPS 인증서 예외, 타임아웃, redirect 제한을 설정으로 제어합니다.
주요 API
| 메서드 | 경로 | 용도 |
|---|---|---|
GET | /forwarder/api/proxy/get-client-ip | 호출자의 IP 확인용 API입니다. |
ALL | /forwarder/api/proxy/pipe?requestKey=... | 등록된 target으로 요청을 포워딩합니다. |
GET | /forwarder/api/forward-proxy-lab/* | 개발/검증용 lab 대상 페이지와 응답입니다. |
POST | /forwarder/api/forward-proxy-lab/proxy-execute | lab 화면에서 프로그램형 프록시 호출을 시험합니다. |
핵심 구현
Areas/forwarder/Controllers/ProxyController.cs: 실제 프록시 API입니다.Areas/forwarder/Controllers/ForwardProxyLabController.cs: 개발 검증용 target과 lab UI를 제공합니다.Services/ForwardProxyService.cs: Playwright 실행, 브라우저 컨텍스트 재사용, 응답 변환을 담당합니다.Services/SQLiteForwardProxySessionStore.cs: 사용자별 세션 파일을 관리합니다.Extensions/ForwarderAuthorizationExtensions.cs: IP 허용과 BearerToken 검증을 담당합니다.