확장 프로그램 수준 컨테이너 프록시 vs 핑거프린트 브라우저: 다중 계정 격리의 두 가지 경로
다중 계정 격리에는 두 가지 경로가 있습니다. 핑거프린트 브라우저는 커널 계층에서 독립 환경을 위조하고, 확장 프로그램 수준 컨테이너 프록시는 세션 계층에서 한 브라우저를 분할합니다. 전자는 격리의 깊이를, 후자는 병렬성을 삽니다.
다중 계정 격리는 무엇을 격리하는가? 세 계층으로 나눠 본다
격리는 스위치가 아닙니다. 서로를 대체할 수 없는 세 가지 능력이며, 빠진 계층이 곧 위험 판정에서 드러나는 지점입니다.
- 세션 격리
- Cookie, localStorage, 로그인 상태가 서로 보이지 않습니다. 계정이 섞이는지를 결정합니다.
- 네트워크 격리
- 각 계정이 자기 출구 IP로 나가고, 작업 공간을 바꿔도 A의 트래픽이 B의 세션으로 넘어가지 않습니다. 플랫폼이 보는 출처가 하나인지 여럿인지를 결정합니다.
- 핑거프린트 격리
- UA, 시간대, 언어, Canvas / WebGL / Audio, 폰트 열거처럼 수동적으로 수집되는 면이 계정마다 안정적이면서도 서로 다르게 유지됩니다. 하나의 출처가 몇 대의 기기로 판정되는지를 결정합니다.
세 계층의 무게는 대칭이 아닙니다. 세션 계층은 하한선, 네트워크 계층은 합격선, 핑거프린트 계층은 분수령입니다. 어떤 경로로 충분한지는 그 경로가 어느 계층을 자기 경계 안에서 구현했는지로 판단하면 됩니다.
경로 1: 핑거프린트 브라우저는 격리를 브라우저 커널에 넣는다
핑거프린트 브라우저는 독립 클라이언트입니다. 환경마다 전용 프로필, 전용 Cookie 저장소, 전용 프록시, 그리고 다시 쓰인 핑거프린트를 가집니다. 세 계층이 모두 자기 경계 안에 있으므로 두 경로 중 격리가 가장 깊습니다.
비용도 같은 지점에서 나옵니다. 각 환경은 실제로 실행되는 브라우저 인스턴스이므로 메모리가 환경 수에 비례해 늘어납니다. 라이선스는 보통 동시 환경 수나 좌석 단위로 과금되고, 환경이 늘면 커널 업그레이드, 프록시 풀, 핑거프린트 템플릿의 일관성 유지가 운영 업무가 됩니다. 자동화 인터페이스를 함께 제공하는 것도 일반적입니다. 수십 개 계정의 일괄 로그인과 게시는 손으로 돌릴 수 없기 때문입니다. 특정 제품이 어디까지 지원하는지는 구현에 달려 있으니 비교 글이 아니라 공식 문서로 확인하십시오.
한 가지는 분리해 둡시다. Chrome 기본 다중 프로필은 세션 격리를 해 주지만, 프로필별로 트래픽을 나누는 프록시 진입점이 없고 로그인 상태 스냅샷도 없습니다. 전환 비용은 창을 바꾸는 것입니다. 자세한 내용은 내부 링크: Chrome 다중 프로필과의 차이.
경로 2: 확장 프로그램 수준 컨테이너 프록시 — 핑거프린트 브라우저 없이 다중 계정 격리
CrispLogin은 이 경로에 속합니다. 독립 브라우저가 아니라 Chrome / Edge 확장 프로그램입니다. 이미 쓰는 브라우저 안에서 동작하며, 확장이 접근할 수 있는 API로 한 브라우저를 여러 격리 작업 공간으로 나눕니다. 각 작업 공간은 자기만의 Cookie와 사이트 저장소 시야, 자기 출구 프록시, 자기 로그인 상태 스냅샷을 가집니다.
인과는 분명합니다. 컨테이너는 확장이 직접 관리하는 ‘탭 → 컨테이너’ 소속이고 Cookie와 사이트 저장소는 컨테이너 단위로 기록되므로, A에서 로그인한 사이트를 B에서 열면 로그아웃 상태이며 두 localStorage도 서로 보이지 않습니다. 프록시가 브라우저 전역이 아니라 컨테이너에 묶여 있으므로 작업 공간을 바꾸면 출구 IP도 따라 바뀌고, A의 네트워크상 신원이 B의 세션으로 들어가지 않습니다. 이것이 ‘한 브라우저 여러 계정 동시 로그인’을 세션 계층에서 구현할 수 있는 범위입니다.
컨테이너 프록시는 Chrome에서 실제로 어떻게 구현되는가
정확히 말하면 Chrome의 프록시 설정 범위는 브라우저 프로필 단위이지 탭 단위가 아니며, PAC 스크립트에는 tabId가 전달되지 않습니다. 그래서 컨테이너 프록시는 활성 탭이 바뀔 때 이 설정을 다시 써서, 전면 탭의 출구가 그 탭이 속한 컨테이너의 출구와 같아지도록 구현됩니다. 보장하는 것은 ‘지금 보고 있는 작업 공간의 출구가 살아 있다’는 것이지, ‘열 개 작업 공간이 동시에 각자의 터널을 쓴다’는 것이 아닙니다. 후자는 별도 네트워크 스택이 필요하고 클라이언트만 할 수 있습니다. 컨테이너를 떠나면 다른 컨테이너는 규칙으로 막혀 두 출구가 같은 순간에 섞이지 않습니다. Service Worker 직접 통신과 WebRTC에 대한 커버리지는 제한적이며 구현에 달려 있습니다. 설정과 문제 해결은 내부 링크: 컨테이너 프록시 설정과 점검.
사이트 스냅샷: 계정 전환을 ‘다시 로그인’에서 ‘하나 고르기’로
스냅샷이 저장하는 것은 한 사이트의 로그인 상태(Cookie와 해당 사이트 저장소)이며 컨테이너에 속합니다. 로그인 상태를 스냅샷 하나로 따로 저장할 수 있으므로 계정 전환 비용은 하나를 고르는 것이 되고, 로그아웃 후 다시 로그인할 필요도, 비밀번호를 메모장에 붙여 둘 필요도 없습니다. 중간 위험 운영에서 확장 경로가 가장 실용적인 지점이 이 계층이며, ‘여러 계정’을 ‘여러 브라우저’에서 ‘여러 작업 공간’으로 낮춥니다. 사용법은 내부 링크: 사이트 스냅샷 저장과 복원.
확장이 핑거프린트 계층에서 할 수 있는 것과 없는 것
Manifest V3에서 확장이 바꿀 수 있는 것은 요청 헤더입니다. UA와 sec-ch-ua 계열 Client Hints는 컨테이너 단위로 다시 쓸 수 있습니다(declarativeNetRequest의 modifyHeaders). 그 아래는 불가능합니다. Canvas, WebGL, AudioContext, 폰트 열거는 렌더러와 커널 안에서 일어나고 확장에는 API가 없으며, 페이지 자바스크립트에 패치를 대는 것만 가능합니다. 그것은 커널 수준 재작성이 아니고, 탐지될 수 있으며, 브라우저 버전에 강하게 묶입니다. 따라서 확장이 핑거프린트 계층에서 제공하는 것은 ‘일관성’(같은 컨테이너는 매번 같게 보인다)이지 ‘위장’(다른 컨테이너를 다른 기기처럼 보이게 한다)이 아닙니다. 이 지점이 두 경로의 분수령이며 흐리면 안 됩니다.
핑거프린트 브라우저 vs 확장 프로그램: 여덟 항목 비교
앞의 분석을 표 하나로 압축합니다. 각 행은 질문 하나에만 답하고, 결론은 칸에 그대로 적습니다. ‘상황에 따라’는 쓰지 않습니다.
| 항목 | 핑거프린트 브라우저(클라이언트) | 확장 프로그램 수준 컨테이너 프록시(CrispLogin 등) |
|---|---|---|
| 격리 계층 | 커널: 독립 브라우저 인스턴스 + 전용 프로필 | 세션: 한 브라우저 안의 컨테이너화된 Cookie와 저장소 |
| 핑거프린트 제어 | 높음: UA, 시간대, 언어, Canvas / WebGL / Audio, 폰트를 세트로 설정 | 제한적: 요청 헤더와 UA는 변경 가능, 커널 수준 핑거프린트는 불가 |
| 프록시 입자 | 환경마다 독립 프록시, 여러 출구 동시 병행 가능 | 컨테이너에 묶임, 같은 시각에 전면 작업 공간 하나의 출구 |
| 병렬 방식 | 다중 클라이언트·다중 창, 환경끼리 영향 없음 | 단일 창 다중 탭, 작업 공간 간 즉시 전환 |
| 자원 사용 | 환경마다 브라우저 프로세스 한 세트, 메모리는 환경 수에 비례 | 호스트 브라우저 재사용, 증가분 거의 없음, 탭 몇 개 추가 |
| 비용 | 동시 환경 수나 좌석 구독, 별도 프록시 풀과 운영 인력 | 확장 구독, 추가 클라이언트와 환경 운영 없음 |
| 적합한 위험 수준 | 높음: 플랫폼이 핑거프린트 일관성을 깊게 검증 | 중간: 위험 관리가 세션·행동·출구 IP 중심 |
| 대표 사례 | 대규모 소셜 매트릭스, 국경 간 다중 스토어, 일괄 자동화 | 소수 계정, 일상적 작업 공간 전환, 광고와 고객 지원 다중 로그인 |
판단 경계: 확장으로 충분한 경우와 클라이언트가 필요한 경우
기준은 세 가지뿐입니다. 하나씩 대조하면 됩니다. ‘요구 사항에 따라’는 답이 아닙니다.
- 계정 수와 동시성.열 개 안팎에 하루 수십 번 전환한다면 확장으로 충분합니다. 서른 개 이상을 동시에 온라인으로 둬야 한다면 클라이언트가 필요합니다. 확장의 병렬은 ‘전환’이지 ‘동시’가 아니며, 전면 출구는 한 번에 하나뿐입니다.
- 플랫폼이 실제로 무엇을 문제 삼는가.정지 사유에 기기 핑거프린트 중복이나 Canvas 이상 같은 표현이 나오면 일관성을 검증받는 것이고, 확장의 세션과 출구 두 계층으로는 닿지 않습니다. 정지 사유가 IP, 로그인 빈도, 조작 행동에 연결된다면 확장으로 이미 덮입니다.
- 무인 운영이 필요한가.일괄 로그인, 일괄 게시, 정시 작업에는 클라이언트가 필요합니다. 안정적인 자동화 인터페이스가 필요하기 때문입니다. 확장에는 그것이 없고, 어떤 제품이 지원한다고 주장해도 상호작용 계층까지입니다.
반대 방향도 중요합니다. 계정이 셋, 하루 다섯 번 전환, 스토어 관리 화면과 광고 관리 화면을 한 창에서 나누고 싶을 뿐이라면 환경 과금 클라이언트를 사는 것은 쓰지도 않을 격리 깊이를 위해 운영 비용을 내는 일입니다. 내부 링크: 경량 경로가 통하는 범위
흔한 오해 세 가지
오해 1: 격리란 IP를 바꾸는 것
IP는 네트워크 계층일 뿐입니다. 세션이 격리되지 않으면 두 계정이 같은 브라우저에서 Cookie를 공유하고, 출구를 아무리 돌려도 섞입니다. 세션을 먼저 보고 그다음 IP를 보십시오.
오해 2: 확장이 핑거프린트 브라우저를 완전히 대체한다
대체하지 못합니다. 확장은 커널 수준 핑거프린트에 닿지 못하고 독립 네트워크 스택도 제공하지 않습니다. 이 두 가지가 상한을 정합니다. 대체되는 것은 ‘로그인을 나누려고 클라이언트를 산다’는 동기이지 클라이언트 자체가 아닙니다.
오해 3: 핑거프린트 브라우저를 쓰면 무조건 안전하다
얻는 것은 더 강한 환경 격리이지 더 강한 운영 안전성이 아닙니다. 환경이 많고 설정이 제각각일수록 실수가 드러날 면이 커집니다. 핑거프린트 템플릿과 프록시 위치가 어긋나거나 시간대와 IP 지역이 모순되는 상태가, 오히려 균일한 상태보다 눈에 띄는 신호입니다.
자주 묻는 질문
확장 프로그램이 핑거프린트 브라우저를 완전히 대체할 수 있나요?
아니요. Cookie와 사이트 저장소 격리, 컨테이너별 출구 전환, 로그인 상태 복원은 가능하지만 Canvas나 WebGL 같은 커널 수준 핑거프린트는 바꿀 수 없고, 여러 작업 공간을 동시에 서로 다른 터널로 보낼 수도 없습니다. 플랫폼이 일관성을 깊게 검증한다면 클라이언트가 필요합니다. 반대로 세션과 IP 격리만 필요하다면 클라이언트는 과잉입니다.
컨테이너 프록시와 전역 프록시는 차이가 큰가요?
차이는 ‘무엇이 무엇을 따라가는가’입니다. 전역 프록시는 브라우저 전체가 출구 하나를 모든 탭이 공유하므로 계정을 바꿔도 출구가 그대로입니다. 컨테이너 프록시는 출구를 작업 공간에 묶으므로 작업 공간을 바꾸면 출구도 바뀝니다. 전자는 간편하지만 여러 계정이 같은 IP를 공유하고, 후자만 작업 공간마다 다른 출처를 만들 수 있습니다.
한 브라우저에서 여러 계정에 동시에 로그인하면 서로 밀어내나요?
세션이 실제로 격리되었는지에 달렸습니다. Cookie와 사이트 저장소가 컨테이너별로 나뉘고 컨테이너끼리 로그인 상태를 공유하지 않으면 같은 도메인의 여러 계정이 공존할 수 있습니다. 두 작업 공간이 같은 컨테이너에 있으면 같은 세션이므로 나중에 로그인한 쪽이 앞의 것을 밀어냅니다. 양쪽 Cookie가 독립적인지로 판단하십시오.
핑거프린트 브라우저 없이 다중 계정을 하면 위험은 어디에 있나요?
핑거프린트 계층에 집중됩니다. 같은 기기와 같은 브라우저에서는 IP를 나눠도 수동적으로 수집되는 면(Canvas, 폰트, 시간대)이 그대로 같고, 그 신호를 판정에 넣는 플랫폼에서는 계정끼리 연결됩니다. 그래서 확장 경로는 위험 관리가 세션과 IP 중심인 플랫폼에 맞고, 핑거프린트 일관성을 필수 조건으로 두는 플랫폼에는 맞지 않습니다.
출처와 최종 수정
API 동작을 다룬 부분은 공식 문서를 우선합니다. 확장의 능력 경계는 브라우저 버전에 따라 움직이므로 도입 전에 해당 시점 문서로 다시 확인하십시오.
- Chrome for Developers, chrome.proxy API 참조 — 프록시 설정의 범위와 PAC 지원: developer.chrome.com/docs/extensions/reference/api/proxy
- Chrome for Developers, chrome.declarativeNetRequest — MV3에서 요청 헤더(UA / Client Hints)를 다시 쓸 수 있는 범위: developer.chrome.com/docs/extensions/reference/api/declarativeNetRequest
- Chrome for Developers, Migrate to Manifest V3 — 백그라운드 페이지의 Service Worker 전환과 블로킹 webRequest 종료: developer.chrome.com/docs/extensions/develop/migrate
- MDN, contextualIdentities — Firefox 다중 계정 컨테이너가 cookieStoreId로 저장소를 격리하는, 확장 수준 컨테이너의 공개 선례: developer.mozilla.org/…/contextualIdentities
- MDN, State Partitioning — 브라우저가 최상위 사이트 단위로 저장소를 분할하는 공개된 메커니즘: developer.mozilla.org/…/State_Partitioning
최종 수정: 2026년 11월 8일. 특정 제품 능력에 대한 서술은 해당 시점 버전을 기준으로 합니다. ‘구현에 달려 있다’고 적은 부분은 선택 시 실측으로 확인하십시오.